1. Collection 和 collections 的区别
Collection 是集合类,是java中的容器。是所有单列集合的父接口。实现Collection接口的有List,Set和Queque。
Collections是工具类,为集合提供一系列静态方法。
2. List,Set, Map的区别、
List 是有序可重复集合,单列集合。特点是查询快,增删慢。
Set 是不可重复集合,单列集合。特点是查询慢,增删快。
Map 是映射,key不可重复,value可重复的,一个key只能对应一个value的双列集合。
3.HashMap和HashTable的区别
HashMap 是线程不安全的,HashTable是线程安全的。
HashMap 允许有一个key为null,HashTable不允许有key为null。
4. HashMap和TreeMap的使用区别
HashMap适合在Map中插入、删除和定位元素这类操作。HashMap添加元素更快。
TreeMap适合对一个key集合进行有序遍历的操作。
5. HashSet实现原理
HashSet底层由HashMap实现,HashSet的值放在HashMap的key上,HashMap的value一律为PRESENT。
6. HashMap实现原理
HashMap通过哈希值来存储元素。当往HashMap中添加元素时,先要判断其哈希值所在的数组的位置/下标是否存在其他元素,如果存在,则将该元素与其他元素以链表的形式存放,新加入的放在链头。 如果数组中该位置没有元素,就直接将元素放在该数组的位置上。若链表数超过八个,该链表会转为红黑树以提高查询效率。
7. ArrayList和LinkedList的区别
ArrayList数据结构是数组;LinkedList数据结构是双链表。
ArrayList查询快,增删慢;LinkedList查询慢,增删快。
8. 如何实现数组和List之间的转换
使用toArray() 将集合中的元素存储到数组。
使用asList() 将数组转化为List集合。
9.ArrayList 和Vector的区别
ArrayLisy 是多线程;Vector是单线程。
ArrayLisy 比Vector 快,vector因为有同步,不会过载。
10.Array 和ArrayList的区别
Array是数组,长度是固定的,一旦声明就不可以改变长度;
ArrayList是集合,长度是可变的。
Array可以容纳基本类型和对象;
ArrayList只能容纳对象。
Array功能没有ArrayList多。
11.哪些集合是线程安全的
- vector (效率低)
- hashtable
- concurrentMap
- synchronizedMap
- stack
- enumeration
12.Iterator是什么,怎么使用
Iterator接口是迭代器,可用于遍历迭代集合。
使用步骤
- 调用Iterator() 返回 iterator集合
- 判断集合是否还有元素:hasNext()
- 返回下一个元素:next()
13. TreeSet和TreeMap在排序时如何比较元素
TreeSet 要求存放的对象所属的类必须实现comparable接口且重写compareTo(),当插入元素时会回调该方法进行元素大小的比较。
TreeMap中,要求存放的键必须comparable接口且重写compareTo(),或者在构造TreeMap时传入第二个参数:自定义的comparator接口。
14. 有什么方式实现集合排序
- Collection.sort()
- TreeSet()
- TreeMap
- 存储在有序集合List里
15. 如何打印数组
Arrays.toString()