集合二
List遍历
-
for循环遍历
-
增强for循环(不支持在遍历是删除数组,如果删除会抛出并发修改异常)
-
迭代器 调用Iterator()返回一个迭代器 listIterator 调用previous方法逆序遍历
Set接口
Set接口继承于Collectionjiekou
set中存储的元素是不重复的,无序的,set中的元素没有索引
实现类
Hashset类
方法
-
.add
-
.clear
-
.contain 如果包含指定元素,返回true
set集合只能用增强for循环和迭代遍历
Hashset添加元素时,如何判断元素是否存在(也就是判断HashMap的键是如何判断重复)
先用hashcode()计算出hash值,比较
但是可能会有相同的hash值,但是内容不同,在调用equals()
但是一般类中都会重写Object类中的hashcode()方法,重写的计算方式都是根据对象中包含的内容的值来计算
Treeset
可以给set集合中的元素进行指定方式的排序。存储的对象类必须实现Comparable接口
Treeset底层数据结构为红黑树
Map
双列存储 ( key键 values值 )
键不可以重复,值可以
HashMap
-
存储方式
哈希表(数组) 默认值长度为16,数组只是用来定位元素在哈希表的位置,
链表 当哈希值相同时,在数组确定的位置创建链表
红黑树 当链表过长会导致查询慢,故将链表转为红黑树
负载因子 当哈希表容量到达整数数组的0.75,进行扩容为原来的2倍
HashTable
线程安全
实现了同步。
不能存储为null的键
TreeMap
TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序 的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。
Map遍历方式
1.keyset
2.entryset() 把Map中的键值对封装子啊一个entryset对象中