Map映射集合

2019-04-07  本文已影响0人  Finlay_Li

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);
    }
}  

}

上一篇下一篇

猜你喜欢

热点阅读