美文网首页
记录JAVA集合学习-map

记录JAVA集合学习-map

作者: ccccaixiaohao | 来源:发表于2019-07-13 22:34 被阅读0次

1.Map接口和Collection接口的不同

Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

2.Map集合的功能概述

* a:添加功能
    * V put(K key,V value):添加元素。
        * 如果键是第一次存储,就直接存储元素,返回null
        * 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
* b:删除功能
    * void clear():移除所有的键值对元素
    * V remove(Object key):根据键删除键值对元素,并把值返回
* c:判断功能
    * boolean containsKey(Object key):判断集合是否包含指定的键
    * boolean containsValue(Object value):判断集合是否包含指定的值
    * boolean isEmpty():判断集合是否为空
* d:获取功能
    * Set<Map.Entry<K,V>> entrySet():
    * V get(Object key):根据键获取值
    * Set<K> keySet():获取集合中所有键的集合
    * Collection<V> values():获取集合中所有值的集合
* e:长度功能
    * int size():返回集合中的键值对的个数

entrySet():将键值对封装成一个对象进行返回

public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("test1", 12);
        map.put("test2", 23);
        map.put("test3", 43);
        map.put("test4", 35);
        map.put("test5", 33);
        
        Set<Entry<String, Integer>> set =  map.entrySet();
        
        for (Entry<String, Integer>  s : set) {
            System.out.println(s);
        }
        
    }
image.png

3.集合框架(Map集合的遍历之键找值)

  • A:键找值思路:
    • 获取所有键的集合
    • 遍历键的集合,获取到每一个键
    • 根据键找值
  • B:案例演示
    • Map集合的遍历之键找值

        HashMap<String, Integer> hm = new HashMap<>();
        hm.put("张三", 23);
        hm.put("李四", 24);
        hm.put("王五", 25);
        hm.put("赵六", 26);
        
        Set<String> keySet = hm.keySet();           //获取集合中所有的键
        Iterator<String> it = keySet.iterator();    //获取迭代器
        while(it.hasNext()) {                       //判断单列集合中是否有元素
            String key = it.next();                 //获取集合中的每一个元素,其实就是双列集合中的键
            Integer value = hm.get(key);            //根据键获取值
            System.out.println(key + "=" + value);  //打印键值对
        }
        
        for(String key : hm.keySet()) {             //增强for循环迭代双列集合第一种方式
            System.out.println(key + "=" + hm.get(key));
        }
      

4.集合框架(Map集合的遍历之键值对对象找键和值)

  • A:键值对对象找键和值思路:
    • 获取所有键值对对象的集合
    • 遍历键值对对象的集合,获取到每一个键值对对象
    • 根据键值对对象找键和值
  • B:案例演示
    • Map集合的遍历之键值对对象找键和值

        HashMap<String, Integer> hm = new HashMap<>();
        hm.put("张三", 23);
        hm.put("李四", 24);
        hm.put("王五", 25);
        hm.put("赵六", 26);
        Set<Map.Entry<String, Integer>> entrySet = hm.entrySet();   //获取所有的键值对象的集合
        Iterator<Entry<String, Integer>> it = entrySet.iterator();//获取迭代器
        while(it.hasNext()) {
            Entry<String, Integer> en = it.next();              //获取键值对对象
            String key = en.getKey();                               //根据键值对对象获取键
            Integer value = en.getValue();                          //根据键值对对象获取值
            System.out.println(key + "=" + value);
        }
        
        for(Entry<String,Integer> en : hm.entrySet()) {
            System.out.println(en.getKey() + "=" + en.getValue());
        }
      

5.HashMap 的嵌套

//hashMap的嵌套
    public static void main(String[] args) {
        HashMap<String,Integer> map1 = new HashMap<>();
        map1.put("test1", 1);
        map1.put("test2", 2);
        map1.put("test3", 3);
        
        HashMap<String,Integer> map2 = new HashMap<>();
        map2.put("testa", 5);
        map2.put("testb", 6);
        map2.put("testc", 7);
        
        HashMap<String,HashMap<String,Integer>> tmap = new HashMap<>();
        tmap.put("map-test1",map1);
        tmap.put("map-test2",map2);
        
//      for (HashMap<String,Integer> item : tmap.keySet()) {
//          for (String string : item.keySet()) {
//              System.out.println(string);
//          }
//      }
        
        for (String string : tmap.keySet()) {
            HashMap<String,Integer> item = tmap.get(string);
            for (String string1 : item.keySet()) {
                System.out.println(item.get(string1));
            }
        }
        
    }

总结

/**
* Collection
* List(存取有序,有索引,可以重复)
* ArrayList
* 底层是数组实现的,线程不安全,查找和修改快,增和删比较慢
* LinkedList
* 底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢
* Vector
* 底层是数组实现的,线程安全的,无论增删改查都慢
* 如果查找和修改多,用ArrayList
* 如果增和删多,用LinkedList
* 如果都多,用ArrayList
* Set(存取无序,无索引,不可以重复)
* HashSet
* 底层是哈希算法实现
* LinkedHashSet
* 底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样
* TreeSet
* 底层是二叉树算法实现
* 一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高
* TreeSet在面试的时候比较多,问你有几种排序方式,和几种排序方式的区别
* Map
* HashMap
* 底层是哈希算法,针对键
* LinkedHashMap
* 底层是链表,针对键
* TreeMap
* 底层是二叉树算法,针对键
* 开发中用HashMap比较多

相关文章

  • js中的map用法

    java和javascript的map集合对比(仅供自己学习记录)

  • 记录JAVA集合学习-map

    1.Map接口和Collection接口的不同 2.Map集合的功能概述 entrySet():将键值对封装成一个...

  • 史上最详尽 Java 8 集合类 HashMap : 底层实现和

    史上最详尽 Java 8 集合类 HashMap : 底层实现和原理学习笔记(源码解析) Java中Map接口集合...

  • day14 Map集合

    Map集合 Map集合是双列集合, 是一种一一对应关系,就是映射,Java提供 java,util.Map接口供我...

  • 集合详解

    Iterator:迭代器,它是Java集合的顶层接口(不包括 map 系列的集合,Map接口 是 map 系列集合...

  • 详解Java中Map集合类 HashMap、Hashtable、

    学习Java中Map集合类时,强烈建议和Java中set一起 一、Map的基本介绍及其实现类 Java.util....

  • 集合使用

    java中集合是比较重要的一个知识点,这里是作为学习,记录一下 集合主要包含list,set和map list,s...

  • Java的集合类概述

    Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框...

  • Java 容器 - 一文详解HashMap

    Map 类集合 Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类...

  • JavaSE总结(7)Map

    Collection中的集合称为单列集合,Map中的集合称为双列集合。 一、 java.util.Map...

网友评论

      本文标题:记录JAVA集合学习-map

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