1、Java容器的结构 答案
2、collection和collections的区别?
- collection:是一个集合接口,是顶级集合接口。提供对集合对象基本操作的通用接口方法:size(),isEmpty(),clear(),add(),addAll()。
- collections:是一个集合类的工具类,提供了一些静态方法,对集合进行排序,搜索以及线程安全等操作。
3、List,set,Map之间的区别? 答案
4、HashMap和HashTable之间的区别 ?
- HashMap去掉了HashTable的contain()方法,但加上了containValue和containkey方法
- HashMap是线程不安全的,hashTable是线程安全的。面试相关问题:hashTable是怎么实现线程安全的?
- HashMap允许null值,而hashTable不允许。
5、HashMap和TreeMap之间的选择 ?
对于map中的插入,删除,定位元素这类的操作,HashMap是最好的选择,加入你需要对一个有序的key集合进行遍历,那么TreeMap可以实现需求。
6、HashMap的实现原理
hashMap底层是哈希表
hashMap在JDK1.8前后的实现方式有所不同,1.8以前是数组加链表,1.8以后是数组加链表加红黑树。在哈希冲突多的时候,红黑树可以将查询的时间复杂度从n降到logn。
hashMap的扩容机制。
7、HashSet的底层实现
hashSet的底层是hashMap,hashSet将值放在HashMap的key上。
8、ArrayList和LinkedList的区别? 答案
9、List和数组之间的转换
- list转成数组,ArrayList.toArray();
- 数组转成list,Arrays.asList();
10、Array和ArrayList之间的区别?答案
11、Queue中的poll() 和 remove() 的区别是什么?
二者都是从队列中取出一个元素,poll获取元素失败后会返回空,但remove如果失败了就会抛异常。
12、哪些结合类是线程安全的
vector,stack,hashTable
13、迭代器Iterator是什么?
迭代器是一种设计模式,它是一个对象,他可以遍历并选择序列中的对象,而且开发员不需要了解该序列的底层结构。
14、Iterator怎么使用?有什么特点?
Java中的Iterator功能比较简单,并且只能单向移动。
- 使用Iterator()要求容器返回一个迭代器。第一次调用Iterator的next()方法,他返回的是序列的第一个元素。
- 使用next()获取下一个元素
- 使用hasNext()检查序列是否还有元素
- 使用remove()将迭代器返回的元素删除
可以使用迭代器对list进行删除
15、Iterator和ListIterator有什么区别?
- Iterator可以用来遍历set和list,而ListIterator只可以遍历list
- Iterator只可以前向遍历,而ListIterator可以双向遍历
- ListIterator实现了Iterator接口,并包含Iterator所有的其他功能