- java 容器都有哪些?
- Collection 和 Collections 有什么区别?
- java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
-
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
-
Collections常用API
-
boolean addAll(Collection<T> c, T... elements)
:往集合中添加一些元素 -
void shuffle(List<?> list) 打乱顺序
:打乱集合顺序。 -
void sort(List<T> list)
:将集合中元素按照默认规则排序。
-
-
List、Set、Map 之间的区别是什么?
比较 List Set Map 继承接口 Collection Collection 常见实现类 ArrayList,LinkedList,Vector HashSet,LinkedHashSet,TreeSet HashMap,HashTable 常见方法 add(),remove(),clear(),get(),contains(),size() add(),remove(),clear(),contains(),size() put(),get(),remove(),clear(),
containsKey(),containsValue()
keySet(),values(),size()
元素 可重复 不可重复 不可重复 排序 有序 无序 线程安全 Cector线程安全 HashTable线程安全 - HashMap 和 Hashtable 有什么区别?
- hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
-
hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
-
hashMap允许空键值,而hashTable不允许。
-
说一下 HashMap 的实现原理?
-
HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。
需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)
-
-
说一下 HashSet 的实现原理?
-
HashSet底层由HashMap实现
-
HashSet的值存放于HashMap的key上
-
HashMap的value统一为PRESENT
-