基础知识点二

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();

 

posted @ 2019-03-07 17:32  亦真亦假,何必当真  阅读(225)  评论(0编辑  收藏  举报