基础知识点二
18.java 容器都有哪些?
List:存放有序,列表存储,元素可重复(ArrayList(数组)、LinkedList(链表)、Vector(线程安全的数组))
Set:无序,元素不可重复(HashSet(HashMap以Key为存储)、TreeSet(红黑树数据结构存储)、LinkedHashSet(LinkedHashMap为数据结构))
Map:无序,元素可重复(HashMap(哈希表)、HashTable(线程安全哈希表)、LinkedHashMap()、TreeMap)
19.Collection 和 Collections 有什么区别?
Collection是集合类的顶级接口,为集合提供最大化的统一操作方式,其直接继承接口有List与Set;
Collections是集合类的工具类/帮助类,包含各种有关集合操作的静态方法
20.List、Set、Map 之间的区别是什么?同第一条
21.HashMap 和 Hashtable 有什么区别?
HashMap可以有null的key和Value,而Hashtable不能有null;
HashMap线程非安全,Hashtable线程安全
22.如何决定使用 HashMap 还是 TreeMap?
HashMap是哈希表的数据结构,TreeMap是红黑树数据结构
23.说一下 HashMap 的实现原理?
开辟一个Entry的数组,保存键值对时,通过计算该键的哈希值对应数组的下标,如果该下标位置有数据,比较key是否一致,一致覆盖value,不一致保存next
24.说一下 HashSet 的实现原理?
以HashMap的key作为保存数据结构,所以hashset保存的数据是无序、不可重复
25.ArrayList 和 LinkedList 的区别是什么?
ArrayList 数据结构是数组,LinkedList 是链表结构
26.如何实现数组和 List 之间的转换?
String[] array2 = testList.toArray(new String[testList.size()]);
List<String> list = Arrays.asList(arrays);//不能添加删除元素
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arrays));
27.ArrayList 和 Vector 的区别是什么?
ArrayList 线程不安全,Vector 线程安全
28.Array 和 ArrayList 有何区别?
Array数组长度不可变,数据类型固定;ArrayList容量可变,可存储不同数据类型
29.在 Queue 中 poll()和 remove()有什么区别?
都是返回列表的头元素且移除,不同点是列表为空时poll返回null,remove抛出异常NoSuchElementException
30.哪些集合类是线程安全的?
vector,hashtable
31.迭代器 Iterator 是什么?
迭代器是一种设计模式,定义了操作集合元素的统一接口,开发人员不需要了解集合的底层结构,就可以简单遍历集合元素
32.Iterator 怎么使用?有什么特点?
集合类使用方法iterator()返回一个iterator实例,使用hashnext判断是否还有元素,next返回下一个元素,remove()将迭代器新返回的元素删除。
Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。
Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素。
33.Iterator 和 ListIterator 有什么区别?
Iterator 只可获取或删除集合元素;ListIterator可以获取、删除及添加集合元素
34.怎么确保一个集合不能被修改?
Collections.unmodifiableList();Collections.unmodifiableMap();Collections.unmodifiableSet();