一、HashSet集合
HashSet集合,是Set接口下面的一个具体实现类,在HashSet里面的具体实现是靠HashMap,
在HashSet内部,是一个hash函数(内部存储方式是一个数组,在数组的每个位置又有一个链表来存储)
在HashSet集合里面的数据,可以包含NULL,但是不能包含重复的元素,判定不能重复的元素是因为内部有两个比较方法
1)hashcode方法:判断两个对象的hashcode值是否相等(内部是一个算法,主要是判定位置是否相同),如果位置不相同,则判定为不重复元素,否则就进行下一步判断
2)equals方法:判断两个数据类型以及值是否相同,不相同则不是重复元素,否则为重复元素
二、TreeSet与LinkHashSet
1、TreeSet也是Set下面的一个具体实现类,其内部内容依靠TreeMap本地方法实现
目的是为了让集合里的元素进行有序排序,或者按照比较器进行排序,内部是基于二叉树排序
2、LinkHashSet是Set下的具体实现类,基于HashSet实现
三、集合迭代器
迭代器主要是用于集合元素的遍历输出
1、Iterator:在集合里最常用
Iterator迭代器主要是用于List和sSet的迭代输出,其他的也可使用此方法
2、foreach:在所有遍历最常用
3、ListIterator:只能用于List迭代
4、Enumration
四、consumer与foreach接口
1、foreach中使用的较多的方法:
1) num.forEach((Integer int) ->{System.out.println(int)})
2) num.forEach(int ->{System.out.println(int)})
3) num.forEach( int ->System.out.println(int))
4) num.forEach(System.out::println)
5) num.forEach(new MyConsumer())\
注:上面前四个是使用的lambda表达是,第四个是新特性
2、consumer:当每个对象只使用一次时,此时的对象即可当作消费者使用
五、JDK8的四大函数接口(了解即可)
1、 Consumer接口:Consumer<T>:消费者接口
2、Fuction接口:Fuction<T,R>:表示接受一个参数并返回一个结果的函数
3、Supplier接口:Supplier<T>:代表结果供应商
4、Supplier接口:Supplier<T>:断言接口
六、JDK8Stream接口
类似于流操作,内部操作是一个高级的Iterator接口,对于集合里的元素遍历不是单个遍历,而是有以下操作
1、中间操作
对于集合中的元素,给出具体的操作,比如大写,删重复元素,等等然后集合里的每一个元素都执行此操作
2、结束操作
将所以的元素一次性迭代遍历输出