Map集合(双列集合)

概述

  1. Map是一个接口.只要实现了该接口的类都是双列集合,Map集合每次都要存两个元素(键值对)

  2. 通俗一点就是Collection(单列集合)就是单身狗只能存一个元素,Map就像出双入对的情侣不能分开

  3. 通过键能找到对应的值

  4. 键必须是唯一的,但是值可以重复

创建

集合只能放包装类,所以int类型要放对应的包装类,以下用的是Map的子类HashMap来创建

Map<Integer, String> map = new HashMap<>();
//创建自定义类型
Map<Student, String> studentStringMap = new HashMap<>();
//若需要有序的存放用用LinkedHashMap
Map<String, String> map = new LinkedHashMap<>();

当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须复写对象的hashCode和equals方法

常用方法

具体方法请查看API文档,以下只列了增删改查的方法

public V put(K key, V value) : 添加键值对添加到Map集合中(修改也是用这个方法,键相同,值输入新的值就会覆盖旧的元素)
public V remove(Object key) : 把对应的元素在Map集合中删除,返回被删除元素的值
public void clear() :删除所有键值对
public V get(Object key) 根据指定的键,获取对应的值
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)

遍历

方法一

  1. 调用public Set<K> keySet()方法获得键集合,使用增强for或迭代器来遍历对象

  2. 使用增强for或者迭代器来遍历集合

  3. 调用get方法根据键来获得对应的值

    //创建Map对象       
    Map<String, String> map = new HashMap<>();
    //添加元素
    map.put("001", "AA");
    map.put("002", "BB");
    map.put("003", "CC");
    map.put("004", "DD");
    map.put("005", "EE");
    map.put("006", "AA");
    //修改元素
    map.put("001", "AAAAAAA");
    map.put("002", "BBBBBBB");
    //删除元素
    map.remove("003","CC");
    Set<String> set = map.keySet();
    for (String s : set) {
      System.out.print("key:"+s+" ");
      System.out.println("value:"+map.get(s));
    }

方法二

键值对方式,通过每个键值对(Entry)对象.获取对象中的键与值

  1. 获取集合的键值对对象,返回Set集合

  2. 遍历Set集合,获得每个键值对对象

  3. 通过键值对对象来获取键与值

    Set<Map.Entry<String, String>> entries = map.entrySet();
    for (Map.Entry<String, String> entry : entries) {
       System.out.println("key:"+entry.getKey());
       System.out.println("value"+entry.getValue());
    }

注意

因为map集合是无序的,因此要实现元素排序可以使用LinkedHashMap来存放或者把map转成list集合再调用collections的方法来排序

posted @ 2018-08-13 16:47  205李华秋  阅读(528)  评论(0编辑  收藏  举报