Stream流的中间操作_concat和distinct
static
Stream
Stream流的中间操作_concat和distinct的练习
xxxxxxxxxx
package ch26;
import java.util.ArrayList;
import java.util.stream.Stream;
public class a_5_1测试 {
public static void main(String[] args) {
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("5");
//--------------------------------------------------------------------------------------------
//需求1:取前4个数据组成一个流,注意返回的要是一个流。结果不需要验证
Stream<String> s1 = list.stream().limit(4);//右边返回的就是一个流
//--------------------------------------------------------------------------------------------
//需求2:跳过前2个数据组成一个流。结果不需要验证
Stream<String> s2 = list.stream().skip(2);//右边返回的就是一个流
//---------------------------------------------------------------------------------------------
//需求3:合并上面的需求1和需求2得到的流,并把结果在控制台输出
//由于concat方法是静态的,所以需要Stream接口才能调用。输出在控制台用forEach方法
/*Stream.concat(s1,s2).forEach(System.out::println);
System.out.println("--------------------");*/ //需要自行解开,并把需求4注释掉
//----------------------------------------------------------------------------------------------
//需求4:合并上面的需求1和需求2得到的流,并把结果在控制台输出,要求合并之后的元素不能重复地输出在控制台
Stream.concat(s1,s2).distinct().forEach(System.out::println);
//不重复的实现原理:distinct方法的底层是equals方法,且字符串的底层已经重写了equals方法,所以我们直接用distinct方法即可
//-----------------------------------------------------------------------------------------------
//注意上面的那些代码只有需求3和需求4是有输出的。且必须注释掉需求3和需求4的其中一个,代码才能正常在控制台输出,不然会冲突
}
}