美文网首页
Map映射集合

Map映射集合

作者: Finlay_Li | 来源:发表于2019-04-07 16:43 被阅读0次

    Map集合框架:
    java.util.Map :
    1、定义:具有 key(键)-value(值)映射关系的集合。
    2、Map和Collection的区别:Collection操作一个对象(key)
    Map操作成对对象(key、value)
    3、Map与Collection同级
    |--HashMap :
    1 特性与HashSet一样
    2 Set底层实际使用的是HashMap,不过HashSet只操作了一个对象—>key值
    3 HashMap的value可以重复,判断value时,只需通过 equals() 方法判断
    4 是线程不安全的,所以效率高
    |--LinkedHashMap :特性与LinkedHashSet一样
    |--Hashtable :
    1 是线程安全的,因此效率低。
    2 不允许使用 null 作为 key 和 value

        |--Properties : 用于操作属性文件
            1 由于属性文件里只能写字符串。所以 Properties 里的 key 和 value 都是字符串类型
            2 示例  
            @Test
            public void test3() throws IOException{
                //1. 创建 Properties 的实例
                Properties props = new Properties();
                
                //2. 通过 load(InputStream in) 方法与属性文件关联
                props.load(new FileInputStream(new File("jdbc.properties"));
                
                //3. 通过 getProperty(String key) 获取对应的 value
                     
                String userName = props.getProperty("username");
                String password = props.getProperty("password");
                
                System.out.println(userName);
                System.out.println(password);    
            }
    
    |--TreeMap : 根据 key 拥有指定的排序方式
        1 特性与TreeSet一样
        2 排序:
        ①自然排序(Comparable)
        ②定制排序(Comparator)
    

    Map 的常用方法:
    添加、删除操作:
    Object put(Object key,Object value)
    Object remove(Object key)
    void putAll(Map t)
    void clear()
    元素查询的操作:
    Object get(Object key)
    boolean containsKey(Object key)
    boolean containsValue(Object value)
    int size()
    boolean isEmpty()
    boolean equals(Object obj):两集合必须一模一样才可为true
    Map 的遍历:
    Set keySet()
    Set entrySet()
    Map 的遍历

    遍历 Map 的方式一:获取 Map 中所有的 key 组成的 Set——>keySet()

    1)原理&思路:
    1 Map 中取出的 key散列的,java把他们封装入Set中,提供给我们 Set keySet()
    2 我们通过当前map调用keySet(),可得到封装好key的Set集合
    3 再通过 增强for 遍历此Set集合。取出key
    4 (注意:key是map的,Set是java帮我们封装散列的key)
    5 key对应value。我们通过map.get(key);方法传入key获取对应的value
    6 (注意:value与key的类型是add()时的类型)
    7 为什么java把key封装入Set中而不是其他?
    因key 不可重复,对应Set接口集合
    2)示例:

        Set set = map.keySet();
        
        for (Object key : set) {
            System.out.println(key);
            
            Object value = map.get(key);
            System.out.println(value);
        }
        
        System.out.println("-------------------------------------------------------------");
        新·
    

    遍历 Map 的方式二:获取 Map 中所有的 Entry组成的 Set——>entrySet();
    1)原理&思路:
    1 java把一个 key 和一个 value 组成一个 Entry类
    2 java再从Map中创建这个entry内部类
    3 java再把entry内部类封装进Set集合中,提供给我们 Set entrySet()

            1 我们通过当前map调用entrySet(),可得到封装好的Set集合
            2 再通过 增强for 遍历此Set集合。取出一个个entry
               注意:entry是内部类的,默认得到的类型是Object
                         实际上是Entity类型因此要强转来调用Entity类中的get方法
            3 再通过 entry提供访问的get方法 x.getKey()
                          entry提供访问的get方法 x.getValue()
                          取出一个个key、value
    

    2)示例:
    Set set2 = map.entrySet();

        for(Object obj : set2){
            Entry entry = (Entry) obj;
            
            Object key = entry.getKey();
            Object value = entry.getValue();
            
            System.out.println(key + "=" + value);
        }
        System.out.println("-------------------------------------------------------------");
        
    
        Iterator it2 = set2.iterator();
        
        while(it2.hasNext()){
            Entry entry = (Entry) it2.next();
        【迭代器取得是对象,类型为Object。但是实际拿的是entry对。所以强转】
            Object key = entry.getKey();
            Object value = entry.getValue();
            
            System.out.println(key + "==" + value);
            System.out.println(entry);
        }
    }  
    

    }

    相关文章

      网友评论

          本文标题:Map映射集合

          本文链接:https://www.haomeiwen.com/subject/wppsiqtx.html