Java 集合框架 Map接口和collection接口的不同、Map的主要方法、遍历Map方法

Map接口和collection接口的不同

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue。除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

Map是双列的,Collection是单列的。
HashSet底层依赖的是HashMap,只是隐藏起了第二列。TreeSet底层依赖的是TreeMap。
在这里插入图片描述
Map的键唯一,Collection的子体系Set是唯一的。
Map集合的数据结构值针对键有效,跟值无关Collection集合的数据结构是针对元素有效。

Collections工具类

提供了对集合进行排序、遍历等多种算法实现。

Map的添加put方法、清空clear方法、删除特定键remove方法

HashMap<String,String> hm = new HashMap<>();
String s1 = hm.put("key1","aaa");
String s2 = hm.put("key2","bbb");
String s3 = hm.put("key1","bbb");
System.out.println(hm);
System.out.println(s1);
System.out.println(s3);

运行结果:{key1=bbb, key2=bbb}
null
aaa

字符串key1、key2是Map的键,是唯一的,同样的键不同的值输入以后原先的值会被覆盖,然后被返回。
remove方法删除指定的键,然后返回指定的键值。

Map的判断是否包含键值containsKey、containsValue,判断是否为空isEmpty,

根据键获取值get,获取所有值values,size获取键值对的个数(不是元素的个数)

遍历Map的方法1(keySet键找值)

HashMap<String,Integer> hm = new HashMap<>();
hm.put("key1",11);
hm.put("key2",22);

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

使用keySet获取集合中所有键的set,然后获取set的遍历器,通过键找到对应的值

遍历Map的方法2(entrySet获取键值对)

HashMap<String,Integer> hm = new HashMap<>();
hm.put("key1",11);
hm.put("key2",22);

Set<Map.Entry<String,Integer>> es = hm.entrySet();
Iterator<Map.Entry<String,Integer>> it= es.iterator();
while (it.hasNext()){
    Map.Entry<String,Integer> en = it.next();
    String key = en.getKey();
    int value = en.getValue();
    System.out.println(key+":"+value);
}

运行结果:key1:11
key2:22
使用entrySet获取键值对为元素的set集合,然后用set集合的遍历器遍历,键值对内置了getKey、getValue方法供使用。

遍历Map的两种方法图解

第一种:通过keySet方法
在这里插入图片描述
第二种方法:
在这里插入图片描述
获取键值对遍历的简化方法:

for (Map.Entry<String,Integer> en:hm.entrySet()) {
    System.out.println(en.getKey()+"+"+en.getValue());
}

LinkedHashMap

保证怎么存就怎么取,同时保证元素唯一

TreeMap

比较键,不比较值

HashMap和Hashtable的区别

共同点:都是用哈希算法
不同:
1,Hashtable是JDK1.0版本的(很早出现的),是同步的(线程安全的),效率低
HashMap是JDK1.2版本的,是不同步(线程不安全的),效率高
2,Hashtable不能存null键和null值,HashMap可以存储null键和null值

学到这里集合框架就算告一段落了,再来看看下面的Java集合框架图还有哪些是没有概念的。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43580841/article/details/107687567