补发:2019-7-20 学习日记之Java数据结构
Java数据结构
一、集合
1、集合类型主要有3种:list、set和Map.
2、集合接口分为:Collection和Map,list、set实现了Collection接口.他的一个类继承结构如下:
Collection<–List<–Vector
Collection<–List<–ArrayList
Collection<–List<–LinkedList
Collection<–Set<–HashSet
Collection<–Set<–HashSet<–LinkedHashSet
Collection<–Set<–SortedSet<–TreeSet
3、Iterator:迭代器,它是Java集合的顶层接口(不包括 map 系列的集合,Map接口 是 map 系列集合的顶层接口)
Iterable和Iterator的区别:
Iterable里面封装了 Iterator 接口。所以只要实现了只要实现了Iterable接口的类,就可以使用Iterator迭代器了。
Iterator :存在于 java.util 包中。核心的方法next(),hasnext(),remove()。
4、List:有序、可以有重复的集合
List 接口的三个典型实现:
①、List list1 = new ArrayList();
底层数据结构是数组,查询快,增删慢;线程不安全,效率高
②、List list2 = new Vector();
底层数据结构是数组,查询快,增删慢;线程安全,效率低,几乎已经淘汰了这个集合
③、List list3 = new LinkedList();
底层数据结构是链表,查询慢,增删快;线程不安全,效率高
5、Set:典型实现 HashSet()是一个无序,不可重复的集合
①、当向HashSet集合中存入一个元素时,HashSet会先调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置
②、如果 hashCode 值不同,直接把该元素存储到 hashCode() 指定的位置
③、如果 hashCode 值相同,那么会继续判断该元素和集合对象的 equals() 作比较
④、hashCode 相同,equals 为 true,则视为同一个对象,不保存在 hashSet()中
⑤、hashCode 相同,equals 为 false,则存储在之前对象同槽位的链表上,这非常麻烦,我们应该约束这种情况,即保证:如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。
参考原文:
作者:cccereus
来源:CSDN
原文:https://blog.csdn.net/cccereus/article/details/80565163