1.ArrayList和LinkList的区别
- ArrayList查询速度快
- LinkList添加,删除速度快
2.Conllection接口的remove()方法与Iterator接口的remove()方法的区别
- 一个有参数,一个没有参数
- Conllection的remove()采用链表结构找出被删除的项,要一个一个遍历去找,而Iterator的remove()方法结合next()方法使用,
- 在使用Iterator遍历时,使用Conllection的remove(),集合中对象的个数会改变而iterator内部对象个数不会,会出现异常,而使用Iterator的remove(),Iterator内部对象和原来集合中对象的个数保持一致,
3.Array与ArrayList有什么区别
- Array长度固定,ArrayList长度可变
- Array只能储存一种数据类型,ArrayList可以储存多种数据类型
- ArrayList是Array的复杂版本
4.数组和集合的互转
- 数组转List
public void test(){
String[] str={"A","B"};//声明实例一个数组
List<String> strings=Arrays.asList(str);//转威List
}
- List转数组
public void test(){
List<String> str=new ArrayList<String>();//声明实例一个集合
str.add("A");//添加数据
str.add("B");
String[] Strings=str.toArray(new String[str.size()]);
}
5.HashSet、TreeSet、LinkedHashSet的区别
- HashSet速度最快
- TreeSet有排序功能
- 需要按照插入的顺序存储集合,使用LinkedHashSet
6.HashMap、TreeMap、linkedHashMap区别?
- HaspMap插入、删除和定位元素最好
- TreeMap排序功能更好
- LinkedHashMap按照插入的顺序排序更好
7.HashMap和HashSet区别
HashMap | HashSet |
---|---|
实现了Map接口 | 实现了Set接口 |
存储键值对 | 存储对象 |
调用put()添加元素 | 调用add()添加元素 |
使用key计算hashcode | 使用成员对象计算hashcode |
速度较快,使用唯一键获取值 | 速度较慢 |
8.HashMap的实现原理
通过put和get存储和获取对象,储存对象时,我们将K/V传给put方法时,他调用hashcode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量。获取对象时,将K传给get,他调用hashcode计算hash从而得到bucket位置,并进一步调用equals()方法确认键值对。