


package com.njwbhz.March.week1.part0303;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Stream;
public class TestHashSet {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("hello");
set.add("world");
set.add("aa");
set.add("bb");
System.out.println(set);//[aa, bb, world, hello]
//输入的顺序和输出的顺序是无关的
//说明存放进去是无序的
//因为内部使用Hash算法
//给定一个值,根据算法计算出它的地址
//地址跟输入的顺序是无关的
set.add("hello");
System.out.println(set.size());//4
//输入一个已经存在的元素,容器中元素的数量并没有增加,这说明HashSet是可以避免重复的
// set.clear();
//clear的功能就是清空容器中的所有元素,没什么好说的
// System.out.println(set.isEmpty());//true
//当执行了set.clear();语句之后,set容器中的所有元素就会被清空,使用isEmpty()判断得到的语句就是true(是空的)
System.out.println(set.contains("aa"));
//contains()的功能就是判断set容器中是否存在某个元素
set.remove("aa");
//remove()的功能就是将set容器中的某个元素删除
System.out.println(set);
//将set中的元素显示出来,被删除的元素就会没了
// for (String s : set){
// System.out.println(s);
// }
// Iterator iterator = set.iterator();
// while (iterator.hasNext()) {
// System.out.println(iterator.next());
// }
Stream<String> stream = set.stream();
//开启一个以set为源头的流
//用泛型限定Stream中只能输入String类型的元素
stream.filter(data -> data.length() == 5 ? true : false).forEach(o -> System.out.print(o + "\t"));//Consumer消费者,终结操作
//在stream流的后面加上
//.filter(data -> data.length() == 5 ? true : false)
//将字符串不为5的元素过滤掉
//.forEach(o -> System.out.print(o + "\t"));
//将过滤完之后的元素通过forEach()遍历出来
//forEach后面的()中写上o -> System.out.print(o + "\t")
//重写forEach()中的遍历方法
}
}