集合框架
Collection接口
它是集合的顶级接口,分为List接口,Set接口,Queue接口
List接口特点:有序,元素可重复
Set接口特点:无序,元素不可重复
Queue接口特点:先进先出
Map接口特点:无序,以键/值对形式添加元素,键不能重复,值可重复
ArrayList和LinkList的区别?
ArrayList(数组结构): 查询快,默认容量10,每次递增:当前容量*3/2+1
LinkedList(链表结构):增删快
Collection接口的remove()方法和Iterator接口的remove()方法区别?
①性能方面
Collection的remove方法必须首先找出要被删除的项,查询效率低,需要从集合中一个一个遍历才能找到该对象;
Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,效率更高
②容错方面
在使用Iterator遍历时,如果使用Collection的remove则会报异常
在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致
Array与ArrayList有什么区别?
①.ArrayList是Array的复杂版本
②.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据
③.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的
4.怎样将一个数组转成List,有什么方法?
数组转list:可以使用Arrays.asList(数组)
List转数组:使用list.toArray()
5.HashSet、TreeSet、LinkedHashSet区别?
①.需要速度快的集合,使用HashSet
②.需要集合有排序功能,使用TreeSet
③.需要按照插入的顺序存储集合,使用LinkedHashSet
HashMap、TreeMap、linkedHashMap区别?
①.在Map中插入、删除和定位元素,HashMap是最好的选择
②.需要集合有排序功能,使用TreeMap更好
③.需要按照插入的顺序存储集合,使用LinkedHashMap
HashMap和HashSet区别?
HashMap的实现原理
通过put和get存储和获取对象,存储对象时,我们将K/V传给put方法时,它调用hashcode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量。获取对象时,我们将K传递给get,他调用hashcode计算hash从而得到bucket位置,并进一步调用equals()方法确认键值对。
List、Set、Map之间的区别?
List和Set都继承Collection,但是Map不是Collection的子接口。