java集合

1、集合思维导图: 

2、讲解queue,message,looper,handler 

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

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

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

collection可以用sort排序

实例:如果从100个题里随机抽取10,可以用shuffle进行随机排序,也可以使用rundom随机数

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内部对象个数和原来集合中对象的个数会保持一致

 

4、array与ArrayList的区别

①:array是数组,ArrayList是集合

②:数组的长度是固定的,ArrayList是动态数组,它可以动态添加和删除元素,称为“集合”(长度可变)

③:存储的数据类型:array只能存储相同的数据类型,ArrayList可以存储不同的数据类型

数组的三种声明方式:

①:int[] a=new int[10]

②:int a[]=new int[10]

③:int a[]={2,3,4}

5、怎么将一个数组转成List,或者将list转成数组

①:数组转list:arrays.asList(数组)

注意点:

②:list转数组:list.toArray(new xxx[集合的长度])

 

6、hashSet、TreeSet、LinkedHashSet区别

①:需要速度快的集合,使用hashSet

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

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

 

7、hashMap,treeMap,linkedHashMap的区别

①:在map的插入、删除、定位元素,hashMap是最好的选择

②:需要集合有排序功能,使用treeMap更好

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

 

8、hashMap和hashSet的区别

 

9、hashMap的实现原理

通过put和get存储和获取对象,存储对象时,我们将K/V传给put方法时,它调用hashcode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量。获取对象时,我们将K传递给get,他调用hashcode计算hash从而得到bucket位置,并进一步调用equals()方法确认键值对。

 

bucket:油桶,结合键值对存储,hashMap默认的初始容量大小是16,当扩容因子达到0.75时,hashMap进行扩容(2的n次方)

 

10、List、Set、Map之间的区别

List和Set都继承Collection,但是Map不是Collection的子接口。

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值