0
点赞
收藏
分享

微信扫一扫

Day23.Map集合、

西风白羽 2022-01-07 阅读 23

HashSer集合中的元素实际上是放在HashMap集合中的key部分 特点无序不重复

TreeSet特点:无序不可重复,但会自动排序,称为可排顺序集合

Map

常用方法

返回此映射中包含的键的 Set 视图。
 Vput(K key, V value)
          向Map集合中添加键值对。
 Vget(Object key)
          通过key获取value。
 Vremove(Object key)
          通过key删除键值对。
 booleancontainsKey(Object key)
          判断Map中是否包含某个key。
 booleancontainsValue(Object value)
          判断Map中是否包含某个value。
 Set<K>

keySet()
          返回此映射中包含的键的 Set 视图。

                                        (HashSet集合的元素存储在HashMap中的key部分)

 Collection<V>values()
          获取Map集合中所有的value,返回一个collection集合
 intsize()
          返回此映射中的键-值映射关系数。
 booleanisEmpty()
          判断集合元素个数是否为0。
voidclear()
          从此映射中移除所有映射关系。 
Set<Map.Entry<K,V>>entrySet()
          将Map集合转换成Set集合
  • 代码测试 
        //创建Map集合对象
        Map<Integer,String> map = new HashMap<>();

        //向Map集合添加键值对
        map.put(1,"张三");
        map.put(2,"李四");
        map.put(3,"王五");

        //通过key获取value
        System.out.println(map.get(2));     //李四

        //获取键值对数量
        System.out.println("键值对数量:"+map.size());    //键值对数量:3

        //获取所有values
        Collection<String> values = map.values();
        for(String s : values){
            System.out.println(s);  //张三 李四 王五
        }

        //通过key删除value
        map.remove(2);
        System.out.println(map.get(2));     //null
        System.out.println("键值对数量:"+map.size());    //键值对数量:2

        //判断是否包含某个key、value
        // (contains方法底层调用的是equals,所以自定义类型需要重写equals方法)
        System.out.println(map.containsKey(2));     //false
        System.out.println(map.containsValue("李四"));    //false

        //清空map集合
        map.clear();
        //判断是否为空
        System.out.println(map.isEmpty());  //true

遍历Map集合

  • 方式1:获取key的set集合,通过遍历获取value(效率较低)
        // 第一种方式:获取所有的key,通过遍历key,通过key获取value
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"张三");
        map.put(2,"王五");
        map.put(3,"赵六");
        //先获取所有的key,所有的key是一个set集合
        Set<Integer> keys = map.keySet();
        //遍历key,通过key获取value
        //迭代器 或 foreach
        Iterator<Integer> it = keys.iterator();
        while(it.hasNext()){
            Integer key = it.next();
            String value = map.get(key);
            System.out.println(value);
        }
  • 方式2:通过entrySet()转换为Set集合,取出每个node(节点)的key、value值。(效率较高)
        // 第二种方式:Set<Map.Entry<K,V>>  entrySet() 效率较高
        //以上方法是将Map集合直接全部转换成Set集合
        //Set集合中的元素类型是:Map.Entry
        Set<Map.Entry<Integer,String>> set = map.entrySet();
        //遍历Set集合,每一次取出一个Node,获取key value
        //(1)迭代器的方式遍历
        Iterator<Map.Entry<Integer,String>> it2 = set.iterator();
        while(it2.hasNext()){
            Map.Entry<Integer,String> node =  it2.next();
            Integer key = node.getKey();
            String value = node.getValue();
            System.out.println(key + "=" + value);  //1=张三2=王五3=赵六
        }
        //(2)foreach方式遍历
        for(Map.Entry<Integer,String> node : set){
            System.out.println(node.getKey() + "=" + node.getValue());
        }


 

举报

相关推荐

0 条评论