集合框架
Collection 接口的常用方法
注意当一个集合存在相同元素时某些方法的调用
注意点:Arrays.asList()
forEach 方法
迭代器
遍历
删除集合元素
注意:当创建一个迭代器时,迭代器指向的是集合的 “前一个元素”
foreach 遍历
List 接口
java基础笔记分享
ArrayList
List 接口的主要实现类,线程不安全,故效率高,底层使用 Object[] elementData 存储
LinkedList
底层使用双向链表,故插入删除效率高
Vector
线程安全,故效率低,底层使用 Object[] elementData 存储
List 接口中的常用方法
Set 接口
HashSet
Set 接口的主要实现类,线程不安全,可以存储 null 值(一般会重写 hashcode 方法和 equals 方法)
LinkedHashSet
HashSet 的子类:遍历其内部数据时,可以按照添加的顺序遍历
TreeSet
放入的数据必须同一类的对象,可以按照添加对象的指定属性进行排序,底层用红黑树实现
自然排序:对象需要实现 Comparable 接口并实现 compareTo 方法
定制排序:
添加元素的过程:以HashSet为例:
我们向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值, 此哈希值接着通过某种算法计算出在HashSet底层数组中的存放位置(即为:索引位置),判断数组此位置上是否已经有元素:
- 如果此位置上没有其他元素,则元素a添加成功。 —>情况1
- 如果此位置上有其他元素b(或以链表形式存在的多个元素),则比较元素a与元素b的hash值:
----如果hash值不相同,则元素a添加成功。—>情况2
----如果hash值相同,进而需要调用元素a所在类的equals()方法:
-------- equals()返回true,元素a添加失败
--------equals()返回false,则元素a添加成功。—>情况3 - 对于添加成功的情况2和情况3而言:元素a 与已经存在指定索引位置上数据以链表的方式存储。
jdk 7 :元素a放到数组中,指向原来的元素。
jdk 8 :原来的元素在数组中,指向元素a
总结:七上八下
HashSet底层:数组+链表的结构。
Map 接口
Map 接口的常用方法
HashMap
作为 Map 接口的主要实现类。线程不安全,效率高。key 和 value 可以为 null。
LinkedHashMap
HashMap 的子类:遍历其内部数据时,可以按照添加的顺序遍历
TreeMap
放入的数据必须同一类的对象,可以按照添加对象的指定属性进行排序,底层用红黑树实现
自然排序:对象需要实现 Comparable 接口并实现 compareTo 方法
定制排序:
Hashtable
作为古老的实现类。线程安全,效率低。key 和 value 不可以为 null。
Properties
Hashtable 的子类。常用来处理配置文件。key 和 value 都是 String 类型。
Map 的遍历
一
二
Conllections 工具类
因此可以使用这种方式创建 dest
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18396.html