本文主要是介绍2021-06-12,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Stream流
Stream流的认识: 1. 生成流: 通过数据源集合,数组等 生成流 3. 中间操作: 一个操作流后面可以跟随零个或多个中间操作,其主要目的是打开流,做出某种程度的数据 过滤/映射,然后返回一个新的流交给下一个操作 filter() 4. 终结操作 一个流只能有一个终结操作,当这个操作执行后。流就被使用完了,无法再被操作,所以这必 定是流的最后一个操作
List<String> list = new ArrayList<>();
Stream<String> arraylist = list.Stream<>();
//Map体系
Map<String,Integer> map = new HashMap<>();
Stream<String> key = map.keySet().stream();
Stream<Integer> values = map.values().stream();
Stream<Map.Entry<String,Integer>> map1 = map.entrySet().stream();
//数组
Stream k = Stream.of(10,20,30);
流·的中间操作
filter()操作: Stream filter(Predicate predicate) Predicate接口中的方法 bollean test();对给定的参数进行判断,返回一个布尔值
List<String> list = new ArrayList<>();
list.add("张3");
list.add("张无忌");
list.add("张三丰");
list.add("王五");
//选取姓氏为 张的
list.stream().filter(s ->s.startsWith("张") ).forEach(System.out::println);
//选取名字长度为3的
list.stream().filter(s -> s.length() == 3).forEach(System.out::println);
//选取姓氏为 张的名字长度为3的
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out**::**println);
2. limit()操作
返回此流中的元素组成的流,截取指定参数个数的数据
3. skip()操作
跳过指定参数个数的数据,返回由该流的剩余元素组成的流
List<String> list = new ArrayList<>();
list.add("张3");
list.add("张无忌");
list.add("张三丰");
list.add("王五");
//输出前三个数据
list.stream().limit(3).forEach(System.out::println);
System.out.println("____________________");
//跳过前两个数据输出
list.stream().skip(2).forEach(System.out::println);
System.out.println("____________________");
//跳过前两个数据输出后两个数据
list.stream().skip(2).limit(2).forEach(System.out::println);
3. static <T> Stream<T> concat(Stream a,Stream b)
合并a和b两个流为一个流
4. distinct()
返回由该流的不同元素组成的流
List<String> list = new ArrayList<>();
list.add("张3");
list.add("张无忌");
list.add("张三丰");
list.add("王五");
Stream<String> li1 = list.stream().limit(3);
Stream<String> li2 = list.stream().skip(2).limit(3);
// Stream.concat(li1,li2).forEach(System.out::println);
System.out.println("****************");
Stream.concat(li1,li2).distinct().forEach(System.out::println);
5. soted()
返回由此流的元素组成的流,根据自然顺序排序
6. sorted(Comparator comparartor)
返回由该流的元素组成的流,根据提供的Comparartor进行排序
List<String> list = new ArrayList<>();
list.add("cdscfd");
list.add("vgnbhnh");
list.add("cvdfsvfd");
list.add("vdfbvvf");
list.add("vgde");
list.stream().sorted().forEach(System.out::println);
System.out.println("***************");
list.stream().sorted((s1,s2) -> s1.length() - s2.length()).forEach(System.out::println);
System.out.println("***************");
list.stream().sorted((s1,s2) -> {int num1 = s1.length() - s2.length();int num2 = num1 == 0?s1.compareTo(s2):num1;return num2; }).forEach(System.out::println);
7. <R> Stream <R> map(Function mapper)
返回由给定函数应用于此流的元素的结构组成的流
Function接口中的方法 R apply(T t)
8. IntStream mapTolnt(TolntFunction mapper)
返回一个IntStream其中包含将给定函数应用于此流的元素的结果
IntStream :表示原始的int流
TolntFunction接口中的方法 int applyAsint(T value)
List<String> list = new ArrayList<>();
list.add("10");
list.add("20");
list.add("5");
list.add("60");
list.add("0");
list.stream().map(Integer::parseInt).forEach(System.out::println);
System.out.println("********************");
list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
终结操作
forEach(Consumer action) 对此流的每个元素执行操作 Consummer接口中的方法 voidaccept(T t)对给定的参数执行此操作、 long count(); 返回此流中得元素数 收集操作 R collect(Collector clooector);参数为一个Collector接口 工具Collectors提供了具体的收集方式 public staticCollector toList();把元素收集到List集合中 public staticCollector toSet(); 把元素收集到Set集合中 public static CollectortoMap(Eunction KeyMapper,Function valuMapper);把元素收集到Map集合中
这篇关于2021-06-12的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!