javaAPI_集合基础_Map集合以及其子类


Map集合以及其相关子类

1.map集合的概述以及特点
map集合是将键映射到值的对象。一个映射不能够包含重复的键;每一个键最多只能够映射到一个值。


2.Collection集合与Map集合的区别
Map集合存储元素是成对出现的,也就是键值对出现,而且键是不可以重复的。
Collection集合存储元素是一个一个存储的,也就是单一存储的。

3.Map集合的功能特点
(1).添加功能
V put(K key,V value);添加元素。如果是相同的键再次添加,这一个时候体现的是替换功能,即只存储最后一个数据。
(2).删除功能
void clear();移除所有的键值对元素。
V remove(Object key);根据键删除键值对元素,并把值返回。
(3).判断功能
boolean contaiansKey(Object key);判断集合是否包含指定的键
boolean contaiansValue(Object value);判断集合是否包含指定的值
boolean isEmpty();判断集合是否为空
(4).获取功能
Set<Map.Entry<K,V>> entrySet():返回集合的键值对对象
V get(Object key):根据键获取值
Set<K> keySet():获取集合中的所有键的集合
(5).长度功能
int size():返回集合中的键值对对数。


4.Map集合的遍历

(1).Map集合的遍历方式1:(纵向查找,先找键后找值)
A:获取所有的键。
B:遍历键的集合,获取得到每一个键。
C:然后按照键去找值。

//代码体现
public static void main(String[] args) {
//创建对象
Map<String, String> mp = new HashMap<String, String>();
//添加元素
mp.put("张三", "张三1");
mp.put("李四", "李四1");
mp.put("王五", "王五1");
mp.put("王二麻子", "王二麻子1");

//遍历
//获取所有的键
Set<String> set = mp.keySet();
//遍历集合,获取得到每一个键
for(String key:set){
//按照键去找值
String value = mp.get(key);
System.out.println(key+"-----"+value);
}
}

(2).Map集合的遍历方式2:(横向查找,先找出一对一对的,然后再往下移动查找其他内容)
A:获取所有键值对对象的集合
B:遍历键值对对象的集合,得到每一个键值对对象
C:根据键值对对象获取键和值

//代码体现
public static void main(String[] args) {
//创建对象
Map<String, String> mp = new HashMap<String, String>();
//添加元素
mp.put("张三", "张三1");
mp.put("李四", "李四1");
mp.put("王五", "王五1");
mp.put("王二麻子", "王二麻子1");

//遍历
//获取所有键值对对象的集合
Set<Map.Entry<String, String>> st = mp.entrySet();
//遍历
for(Map.Entry<String, String> me:st){
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"-----"+value);
}

}

HashMap类

1.概述
HashMap类键值哈希表结构,可以保证键的唯一性。是一个基于哈希表的map实现

2.HashMap类的基本使用
public static void main(String[] args) {
//创建对象
HashMap<String, String> hm = new HashMap<String, String>();
//添加元素
String key = "赵四";
String value = "刘美兰";
hm.put(key, value);
hm.put("王长贵", "谢大脚");
hm.put("刘大脑袋", "王云");
//体现替换功能:把刘美兰替换为刘美兰1
hm.put("赵四", "刘美兰1");

//获取键集合
Set<String> set = hm.keySet();
//遍历
for(String str:set){
String getValue = hm.get(str);
System.out.println(str+"----"+getValue);
}
}
//输出结果:
赵四----刘美兰1
王长贵----谢大脚
刘大脑袋----王云

LinkedHashMap类

1.概述
LinkedHashMap类是有序的(存和取有序)map集合。由于是HashMap的一个子类,所以同样具备相关的一些特性。

2.LinkedHashMap类基本使用
public static void main(String[] args) {
//创建对象
LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
//添加元素
String key = "赵四";
String value = "刘美兰";
hm.put(key, value);
hm.put("王长贵", "谢大脚");
hm.put("刘大脑袋", "王云");
//体现替换功能:把刘美兰替换为刘美兰1
hm.put("赵四", "刘美兰1");

//获取键集合
Set<String> set = hm.keySet();
//遍历
for(String str:set){
String getValue = hm.get(str);
System.out.println(str+"----"+getValue);
}
}

TreeMap类

1.概述
TreeMap类是一个键是红黑树结构的map集合,这样可以保证键的有序和唯一性。

2.TreeMap类基本使用
public static void main(String[] args) {
//创建对象
TreeMap<String, String> tm = new TreeMap<String, String>();
//添加元素
tm.put("hello", "test");
tm.put("world", "test");
tm.put("java", "test");
tm.put("world", "test");
tm.put("javaEE", "test");

//获取键集合
Set<String> set = tm.keySet();
//遍历
for(String str:set){
String getValue = tm.get(str);
System.out.println(str+"----"+getValue);
}
}
//输出结果:[实现了自然排序,因为使用的是构造方法]
hello----test
java----test
javaEE----test
world----test

常见面试题:

1.HashMap和Hashtable之间的区别?
HashMap:线程不安全,效率高,允许有null键和null值
Hashtable:线程安全,效率低,不允许有null键和null值。

2.list,set,Map是否都继承了Map接口?
list,set接口不是继承自Map接口,而是继承自Collection接口。
Map接口自己本身就是一个顶层接口。

猜你喜欢

转载自www.cnblogs.com/nwxayyf/p/10224601.html