Java – 集合Map

简介

Map是集合中双列集合的根类,它是一个接口,因此不能直接创建Map 实例对象,但是其下有三个子类,分别是 HashMap, LinkedHashMap, TreeMap.

单列集合是指,一个数组中只有值,没有对应的键,可能有索引,或没有索引。

双列集合是指,每一个值,都有其对应的唯一的键,俗称键值对。

 

Map常用API

 

添加 put()

添加元素。

语法:

V put(K key, V value)

注意:当调用 put() 方法时,put() 会返回对应的 value 值

当map对象中不存在这个键时,put() 返回 null

当map对象中存在这个键时,put() 新的值会覆盖旧的value值,并返回旧的value值

 

删除 remove()

根据键删除键值对元素。

语法:

V remove(Object key)

注意:删除某个键时,remove() 方法会返回被删除的那个键值对中的 value 值。

 

清空 clear()

移除所有的键值对元素。

语法:

void clear()

 

包含key containsKey()

判断集合是否包含指定的键。

语法:

boolean containsKey(Object key)

 

包含value containsValue()

判断集合是否包含指定的值。

语法:

boolean containsValue(Object value)

 

是否为空 isEmpty()

判断集合是否为空。

语法:

boolean isEmpty()

 

长度 size()

集合的长度,也就是集合中键值对的个数

语法:

int size()

 

Map的遍历方式

键找值

通过键找值的方式,从三种方法上遍历Map

Map<String, String> map = new HashMap<>();
  map.put("小明", "小红");
  map.put("常威", "来福");
  map.put("富豪", "富婆");

  Set<String> keys = map.keySet();

  // 第一种遍历方法 迭代器
  Iterator<String> kit = keys.iterator();
  while (kit.hasNext()) {
   String value = kit.next();
   System.out.println(value);
  }

  // 第二种遍历方法 增强 for
  for (String key : keys) {
   System.out.println(key);
  }

  // 第三种遍历方法 Labmda
  keys.forEach(s -> System.out.println(s));

 

键值对

通过键值对的方式来遍历Map,通过遍历一个键值对对象entry

然后通过 getKey() 和 getValue() 方法取得 entry对象的键和值

Map<String, String> map = new HashMap<>();
  map.put("小明", "小红");
  map.put("常威", "来福");
  map.put("富豪", "富婆");

  Set<Map.Entry<String,String >> entrys = map.entrySet();
  
  // 使用 迭代器 进行遍历
  Iterator<Map.Entry<String, String>> ite = entrys.iterator();
  while (ite.hasNext()){
   Map.Entry<String,String> entry = ite.next();
   System.out.println(entry.getKey()+" = "+entry.getValue());
  }
  
  // 使用 增强for 进行遍历
  for (Map.Entry<String, String> entry : entrys) {
   System.out.println(entry.getKey()+" = "+entry.getValue());
  }
  
  // 使用 Lambda 进行遍历
  entrys.forEach(entry->{
   System.out.println(entry.getKey()+" = "+entry.getValue());
  });

 

Labmda表达式

Map 实现了一个接口BiConsumer,BiConsumer 是用于遍历 Map 对象的接口方法 accept(),accept() 方法传入两个参数,分别为 key和value

map.forEach(new BiConsumer<String, String>() {
   @Override
   public void accept(String key, String value) {
    System.out.println(key + " = " + value);
   }
  });

它支持Lambda简化方式进行遍历

map.forEach((key, value) -> System.out.println(key + " = " + value));

 

Map的子类说明

参照下面文章阅读对应子类的使用说明

简介 HashMap 可以使用Map任何的方法,只是HashMap所使用的存储方式为哈希表,HashMap通过取得键值……
2022-12-12
简介 LinkedHashMap 由键决定,有序、不重复、无索引 这里的有序是指保证存储和取出的元素顺序一……
2022-12-12
TreeMap跟TreeSet底层原理一样,都是红黑树结构的。
2022-12-12

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – 集合Map
简介 Map是集合中双列集合的根类,它是一个接口,因此不能直接创建Map 实例对象,但是其下有三个子类,分别是 HashMap, LinkedHashMap, TreeMap. 单列集合是指,一个数组中只有值,没有对应的……
<<上一篇
下一篇>>