集合框架map,set,entry


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ArrayList: 有序(放进去顺序和拿出来顺序一致),可重复
HashSet: 无序(放进去顺序和拿出来顺序不一定一致),不可重复

ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。
LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。

在这里插入图片描述

队列:Queue先进先出 FIFO Firt In First Out
客服电话、12306排队买票、滴滴打车

Map:键值对

(和查字典类似)
Map<K, V> key,value
在这里插入图片描述

Set<Entry<String, String>> set = map.entrySet();
map.keySet();

一、Map接口

1、Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
2、Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
3、Collection中的集合称为单列集合,Map中的集合称为双列集合。
4、需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
5、Map中常用的集合为HashMap集合、LinkedHashMap集合。
在这里插入图片描述

Map接口中的常用方法

在这里插入图片描述

public static void main(String[] args) {
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 给map中添加元素
map.put(“星期一”, “Monday”);
map.put(“星期日”, “Sunday”);
System.out.println(map); // {星期日=Sunday, 星期一=Monday}
// 根据指定的key获取对应的value
String en = map.get(“星期日”);
System.out.println(en); // Sunday
// 根据keys删除元素,会返回key对应的value值
String value = map.remove(“星期日”);
System.out.println(value); // Sunday
System.out.println(map); // {星期一=Monday}
}

Map集合遍历键找值方式:

一、键找值方式:即通过元素中的键,获取键所对应的值

在这里插入图片描述

1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键

2.遍历键的Set集合,得到每一个键
3.根据键,获取键所对应的值

public void test1() {
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 给map中添加元素
map.put(“邓超”, “孙俪”);
map.put(“李晨”, “范冰冰”);
map.put(“刘德华”, “柳岩”);
// 获取Map中的所有key
Set keySet = map.keySet();
// 遍历存放所有key的Set集合
Iterator it = keySet.iterator();
while (it.hasNext()) {
// 得到每一个key
String key = it.next();
// 通过key获取对应的value
String value = map.get(key);
System.out.println(key + “=” + value);
}
}

Map集合遍历键找值方式:

一、键找值方式:即通过元素中的键,获取键所对应的值
1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键

2.遍历键的Set集合,得到每一个键
3.根据键,获取键所对应的值
在这里插入图片描述

public void test1() {
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 给map中添加元素
map.put(“邓超”, “孙俪”);
map.put(“李晨”, “范冰冰”);
map.put(“刘德华”, “柳岩”);
// 获取Map中的所有key
Set keySet = map.keySet();
// 遍历存放所有key的Set集合
Iterator it = keySet.iterator();
while (it.hasNext()) {
// 得到每一个key
String key = it.next();
// 通过key获取对应的value
String value = map.get(key);
System.out.println(key + “=” + value);
}
}

在这里插入图片描述

二、Map集合遍历键值对方式

键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。
操作步骤与图解:
在这里插入图片描述

1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。

2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
3.通过键值对(Entry)对象,获取Entry对象中的键与值。
在这里插入图片描述

public void test2() {
// 创建Map对象
Map<String, String> map = new HashMap<String, String>();
// 给map中添加元素
map.put(“邓超”, “孙俪”);
map.put(“李晨”, “范冰冰”);
map.put(“刘德华”, “柳岩”);
// 获取Map中的所有key与value的对应关系
Set<Map.Entry<String, String>> entrySet = map.entrySet();
// 遍历Set集合
Iterator<Map.Entry<String, String>> it = entrySet.iterator();
while (it.hasNext()) {
// 得到每一对对应关系
Map.Entry<String, String> entry = it.next();
// 通过每一对对应关系获取对应的key
String key = entry.getKey();
// 通过每一对对应关系获取对应的value
String value = entry.getValue();
System.out.println(key + “=” + value);
}
}
在这里插入图片描述

将map转换成entry格式储存在set中,方法调用为map.entryset.迭代时使用定义的实例对象加上iterator即可

注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值