Map笔记总结

Map :存储的是键值对,一对一对出现的,要保证键的唯一性.

Map常见的三个子类. 1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低 此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
2.HashMap 底层是哈希表数据结构,允许null值和null键,该集合不同步. 效率高
3.TreeMap 底层是二叉树结构, 线程不同步,具备排序的特点.可以给Map集合中的键排序. 与Set很像,Set集合的底层就是使用了Map集合方法.

Map其共性方法有:

1.添加   put()   putAll() 2.删除   clear();   remove(); 3.判断   containsValue(Object value)   containsKey(Object key)   isEmpty(); 4.获取   get();   size();   values();

基本共性方法代码演示:

import java.util.*;
class MapDemo
{
    public static void main(String [] args)
    {
        Map<String,String> map = new HashMap<String,String>();  //Hash无序的.

        //添加元素,添加了相同的键,后添加的值会将原先的键对应的值替换掉.put方法会返回原先被覆盖的值.

        sop("Put :"+map.put("01","zhangsan01"));
        sop("Put :"+map.put("01","wangwu"));
        map.put("02","zhangsan02");
        map.put("03","zhangsan03");

        //判断是否包含
        sop("containsKey : zhangsan01 "+"------"+map.containsKey("01"));
        //sop("remove : "+map.remove("03"));  //找寻键,并打印出其对应的值: zhangsan03

        //获取
        sop("get : "+map.get("02"));

        map.put("04",null);
        sop("get : "+map.get("04"));
        //可以通过个get方法的返回值来判断一个 键 是否存在. 通过返回null来判断.

        //获取Map集合中的所有值
        Collection<String> coll =  map.values();
        sop(coll);

        sop(map);
    }

    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

}

Map的重点方法:   entrySet()   KeySet() 这两种方法就是Map集合取出元素的方式:

Map集合两种取出方式:

1.Set<k> keySet 将Map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键. 在根据get方法,获取每个键所对应的值.
Map集合取出原理:转成Set集合.在通过迭代器取出.

2.Set<Map.Entry<k,v>>  entrySet

将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry

其中Entry其实是一个内部接口.定义在map接口里面

格式如下: interface Map {   public static interface  Entry   {     public static void getValue();     public static void getKey();   }
}
class HashMap implements Map {   class Hash implements Map.Entry   {     public Object getValue(){};     public Object getKey(){};   } }

两种取出方式的代码演练:

/*

Map集合两种取出方式:
    1.Set<k> keySet
            将map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键.
            在根据get方法,获取每个键锁对应的值.

            Map集合取出原理:转成Set集合.在通过迭代器取出.

    2.Set<Map.Entry<k,v>>  entrySet ,将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry

    Entry其实是一个内部接口.定义在map接口里面
    interface Map
    {
        public static interface  Entry
        {
            public static void getValue();
            public static void getKey();
        }

    }

    class HashMap implements Map
    {
        class Hash implements Map.Entry
        {
            public Object getValue(){};
            public Object getKey(){};
        }
    }

*/

import java.util.*;
class MapDemo2
{
    public static void main(String [] args)
    {
        Map<String,String> map = new HashMap<String,String>();  

        map.put("01","zhangsan01");
        map.put("02","zhangsan02");
        map.put("03","zhangsan03");
        map.put("04","zhangsan04");

        //将map集合中的 映射关系 取出.

        Set<Map.Entry<String,String>> mapEntry = map.entrySet();

        Iterator<Map.Entry<String,String>> it = mapEntry.iterator();

        while(it.hasNext())
        {
            Map.Entry<String,String> me = it.next();

            String key = me.getKey();
            String value = me.getValue();
            sop("Key :"+key+"Value :"+value);
        }

        /*

        //获取Map集合的所有键,并放在Set集合中. 获取方法: keySet();
        Set<String> keySet = map.keySet();

        //迭代取出所有的键.
        Iterator<String> it = keySet.iterator();

        while(it.hasNext())
        {
            String key = it.next();

            //有了键以后可以通过Map集合的get(key)方法获取其对应的值.
            String value = map.get(key);
            sop("Key :"+key+" Value :"+value);
        }

        */

    }

    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

}

相关练习:

/*
练习:

        每一个学生都有对应的归属地。
        键值对:    学生Student为键,地址类型String值。
        学生属性:姓名,年龄。
        注意:姓名和年龄相同的视为同一个学生。
        保证学生的唯一性。

        1.描述学生。

        2.定义map容器。将学生作为键,地址作为值。存入。

        3.获取map集合中的元素。

*/

import java.util.*;

class MapTest
{
    public static void main(String [] args)
    {
        Map<Student,String> map = new HashMap<Student,String>();  

        map.put(new Student("zhangsan01",21),"beijing");
        map.put(new Student("zhangsan02",22),"shanghai");
        map.put(new Student("zhangsan03",23),"guangzhou");
        map.put(new Student("zhangsan04",24),"shenzhen");

        //第一种取出方式:keySet
        Set<Student> keySet = map.keySet();

        Iterator<Student> it = keySet.iterator();

        while(it.hasNext())
        {
            Student stu = it.next();

            String addr = map.get(stu);

            sop("第一种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", address : "+addr);

        }
        sop("-----------------------------------------");
        //第二种取出方式:entrySet

        Set<Map.Entry<Student,String>> entrySet = map.entrySet();

        Iterator<Map.Entry<Student,String>> iter = entrySet.iterator();

        while(iter.hasNext())
        {
            Map.Entry<Student,String> me = iter.next();

            Student stu = me.getKey();

            String addr = me.getValue();

            sop("第二种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", adresss :"+addr);
        }              

    }

    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

}

class Student implements Comparable<Student>
{
    private String name;
    private int age;

    Student(String name,int age)
    {
        this.name = name;
        this.age = age;
    }

    public int compareTo(Student s)
    {
        if(!(s instanceof Student))
            throw new ClassCastException("类型匹配失败");

            int num = new Integer(this.age).compareTo(new Integer(s.age));
            if(num == 0)
            {
                return this.name.compareTo(s.name);
            }

        return num;
    }

    public int hashCode()
    {
        return name.hashCode()+age*17;
    }

    public boolean equals(Object obj)
    {
        if(!(obj instanceof Student))
            throw new ClassCastException("类型匹配失败");

        Student stu = (Student)obj;

        return this.getName().equals(stu.getName()) && this.age==stu.age;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public String getName()
    {
        return name;
    }

    public  int getAge()
    {
        return age;
    }

}

时间: 2024-11-13 10:18:24

Map笔记总结的相关文章

Java中的Map 笔记

Map是Java中的接口 public interface Map<K,V> Map.Entry是Map的一个内部接口 interface Entry<K,V> {} Map提供了一些常用的方法,如keySet() , values,entrySet() 等方法 keySet() 方法返回的是Map中Key值的集合  而entrySet()返回的也是一个Set集合但是集合类型为Map.Entry<K,V> Set<Map.Entry<K, V>>

STL笔记(1)map

STL笔记(1)map STL之map ZZ from http://hi.baidu.com/liyanyang/blog/item/d5c87e1eb3ba06f41bd576cf.html 1.map中的元素其实就是一个pair. 2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行. 3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映

spark 笔记 15: ShuffleManager,shuffle map两端的stage/task的桥梁

无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素.在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段. ShuffleManager的主要功能是在task直接传递数据,所以getWriter和getReader是它的主要接口. 大流程: 1)需求方:当一个Stage依赖于一个shuffleMap的结果,那它在DAG分解的时候就能识别到这个依赖,并注册到shuffleManager: 2)供应方:也就是shuffleMap,它在结束

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

map 学习笔记

1.map 常用功能 /**************************************** * File Name: map.cpp * Author: sky0917 * Created Time: 2014年06月 4日 15:49:14 ****************************************/ #include <map> #include <cmath> #include <queue> #include <cstd

ES6笔记(6)-- Set、Map结构和Iterator迭代器

系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iterator 学过C++的人应该知道这是个迭代器对象,拥有一个指针,指向数据结构中的某个成员 JS中的iterator也有类似的功能,JS内部为一些数据结构实现了iterator迭代器的接口,让我们可以方便的使用 var [a, b, ...c] = [1, 2, 3, 4]; c // [3, 4]

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣.正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用Jav

Java学习笔记之:Java Map集合

一.介绍 通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的. 二.笔记 /** * Map:接口. 不是collection的子类 key -value 键值对 key唯一不能重复 * 当再次使用相同的key进行保存数据会覆盖之前的key所对应的value值 * * hashMap:底层是哈希表,key符合哈希表特性 * Treemap:底层是二叉树 * @author HuTiger * */ public class MapStudy { public static v