java集合

这几天有时间整理了一下java集合:
1、集合思维导图:
在这里插入图片描述
2、queue,message,looper,handler
在这里插入图片描述

queue(管道,队列<先进先出>)message(信息)looper(循环)handler(处理,线程间的通讯机制)

线程主要分两种,一种是主线程,一种是子线程,主线程主要负责更新UI,子线程主要负责执行耗时操作

子线程调用looper循环拿到queue里面的message,拿到的message传给子线程,子线程通过handler,把接收到的数据交给给主线程

3、Collection的remove()和iterator的remove()的区别:
①有参无参的区别:collection的remove()是有参的,iterator没有

②性能方面:collection的remove()必须找出要被删除的项(单链表查询结构,需要从集合一个一个的去遍历找到它,效率低)

                  iterator的remove()结合next()使用(比如说:集合中的隔一个删一个,效率更高)

③容错方面:在使用iterator遍历时,如果使用collection的remove()可能会报异常(concurrentModificationException)因为集合中对象的个数会改变而iterator内部对象的个数不会,不一致则会出现改异常。

(例如,集合中存放了小明,小红,小兰,它们分别对应的下标分别是0,1,2,对这个集合进行 iterator遍历,如果用collection的remove()移除小红,那么集合将变成小明和小兰,对应的下标为0,1如果这时候删除小兰的话,那么它移除对应的下标应该是1,但是进行了iterator遍历,iterator内部对象的个数不会保持一致,它找不到下一个值,所以它会报错,如果删除的是小兰的话,则没有影响,小明和小红对应的下标还是0,1)

在使用iterator遍历时,用iterator的remove()则不会报错,因为iterator内部对象个数和原来集合中对象的个数会保持一致

5、怎么将一个数组转成List,或者将list转成数组
①:数组转list:arrays.asList(数组)
②:list转数组:list.toArray(new xxx[集合的长度])

6、hashSet、TreeSet、LinkedHashSet区别
①:需要速度快的集合,使用hashSet

②:需要集合有排序功能,使用treeSet

③:需要按照插入的顺序存储集合,使用linkedHashSet

6、hashSet、TreeSet、LinkedHashSet区别
①:需要速度快的集合,使用hashSet

②:需要集合有排序功能,使用treeSet

③:需要按照插入的顺序存储集合,使用linkedHashSet

hashMap和hashSet的区别
在这里插入图片描述
List、Set、Map之间的区别

List:值可重复、有序、可以插入多个null值
Set:值不可重复、无序、只能插入一个null值
Map:键可重复,值不可重复,无序,键只能插入一个null值,值可以插入多个null值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值