网站改版模版,wordpress 显示pdf插件下载,发送电子邮件,网站起域名原则Stream流 体验Stream流Stream流的生成方式ColLection体系的集合可以使用默认方法stream ()生成流Map体系的集合间接的生成流数组可以通过stream接口的静态方法of (T... values)生成流 Stream流的中间操作方法StreamT filter(Predicate predicate)StreamTlimit(… Stream流 体验Stream流Stream流的生成方式ColLection体系的集合可以使用默认方法stream ()生成流Map体系的集合间接的生成流数组可以通过stream接口的静态方法of (T... values)生成流 Stream流的中间操作方法StreamT filter(Predicate predicate)StreamTlimit(long maxSize)和StreamTskip(long n)staticTStreamTconcat(StreamaStream b)和StreamTdistinct()StreamTsorted()和StreamTsorted(Comparatorcomparator)RStreamRmap(Function mapper)和IntStream mapTolnt(TolntFunction mapper) Stream流中常见的终结操作void forEach(Consumeraction)和long count( ) Stream流中的收集方法 体验Stream流
需求:按照下面的要求完成集合的创建和遍历
创建一个集合存储多个字符串元素把集合中所有以”灿”开头的元素存储到一个新的集合把”灿”开头的集合中的长度为2的元素存储到一个新的集合遍历上一步得到的集合 import java.util.ArrayList;public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayListString();list.add(伦伦);list.add(壮壮);list.add(昊昊);list.add(灿灿);list.add(灿灿灿);ArrayListString cListnew ArrayList();for (String s:list){if(s.startsWith(灿))cList.add(s);}System.out.println(cList);ArrayListString twoListnew ArrayList();for (String s:cList){if(s.length()2)twoList.add(s);}for (String s:twoList) {System.out.println(s);}System.out.println(--------);//Stream改进list.stream().filter(s-s.startsWith(灿)).filter(s-s.length()2).forEach(System.out::println);}
}
Stream流的生成方式
Stream流的使用 生成流 通过数据源(集合数组等)生成流 list.stream() 中间操作 一个流后面可以跟随零个或多个中间操作其目的主要是打开流做出某种程度的数据过滤/映射然后返回一个新的流交给下一个操作使用filte() 终结操作 一个流只能有一个终结操作当这个操作执行后流就被使用“光”了无法再被操作。所以这必定是流的最后一个操作forEach()
ColLection体系的集合可以使用默认方法stream ()生成流
default Stream stream ()
public class StreamDemo {public static void main(String[] args) {ListString listnew ArrayListString();StreamString listStream list.stream();SetString setnew HashSetString();StreamString setStream set.stream();}
}Map体系的集合间接的生成流
public class StreamDemo {public static void main(String[] args) {MapString,Integer mapnew HashMapString,Integer();StreamString keyStream map.keySet().stream();StreamInteger valueStream map.values().stream();StreamMap.EntryString, Integer entryStream map.entrySet().stream();}
}数组可以通过stream接口的静态方法of (T… values)生成流
public class StreamDemo {public static void main(String[] args) {String[] strArray{Hello,world,java!};StreamString strArrayStream Stream.of(strArray);StreamString strArrayStream2 Stream.of(Hello,world,java!);StreamInteger intArrayStream Stream.of(1,2,3);}
}Stream流的中间操作方法
Stream filter(Predicate predicate)
用于对流中的数据进行过滤
Predicate接口中的方法boolean test(T t): 对给定的参数进行判断返回一个布尔值
public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayList();list.add(李日天);list.add(朱大壮);list.add(涂狗子);list.stream().filter(s-s.startsWith(李)).forEach(System.out::println);list.stream().filter(s-s.length()3).forEach(System.out::println);list.stream().filter(s-s.startsWith(李)).filter(s-s.length()3).forEach(System.out::println);}
}Streamlimit(long maxSize)和Streamskip(long n) Streamlimit(long maxSize): 返回此流中的元素组成的流截取前指定参数个数的数据 Streamskip(long n):跳过指定参数个数的数据返回由该流的剩余元素组成的流
public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayList();list.add(李日天);list.add(朱大壮);list.add(涂狗子);list.add(杨天花);list.stream().limit(3).forEach(System.out::println);list.stream().skip(3).forEach(System.out::println);}
}staticStreamconcat(StreamaStream b)和Streamdistinct()
staticStreamconcat(StreamaStream b):合并a和b两个流为一个流Streamdistinct(): 返回该流的不同元素(根据Objectequals(Object)) 组成的流
public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayList();list.add(李日天);list.add(朱大壮);list.add(涂狗子);list.add(杨天花);StreamString s1list.stream().limit(3);StreamString s2list.stream().skip(1);// Stream.concat(s1,s2).forEach(System.out::println);Stream.concat(s1,s2).distinct().forEach(System.out::println);}
}Streamsorted()和Streamsorted(Comparatorcomparator)
Streamsorted():返回由此流的元素组成的流根据自然顺序排序Streamsorted(Comparatorcomparator): 返回由该流的元素组成的流根据提供的Comparator进行排序
public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayList();list.add(lhao);list.add(zdzhaung);list.add(tgouzi);list.add(ytianhua);list.stream().sorted().forEach(System.out::println);list.stream().sorted((s1,s2)-{int nums1.length()-s2.length();int num2num0?s1.compareTo(s2):num;return num2;}).forEach(System.out::println);}
}
Streammap(Function mapper)和IntStream mapTolnt(TolntFunction mapper)
Streammap(Function mapper): 返回由给定函数应用于此流的元素的结果组成的流 Function接口中的方法 R apply(Tt) IntStream mapTolnt(TolntFunction mapper): 返回一ntStream其中包含将给定函数应用于此流的元素的结果 IntStream:表示原始int流TolntFunction接口中的方法int applyAslnt(T value)
public class StreamDemo {public static void main(String[] args) {ArrayListString listnew ArrayList();list.add(10);list.add(20);list.add(30);list.add(40);list.stream().map(s-Integer.parseInt(s)).forEach(System.out::println);list.stream().map(Integer::parseInt).forEach(System.out::println);list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);//返回IntStream流int reslist.stream().mapToInt(Integer::parseInt).sum();//IntStream仅有的方法sumSystem.out.println(res);}
}
Stream流中常见的终结操作
void forEach(Consumeraction)和long count( )
void forEach(Consumeraction):对此流的每个元素执行操作 Consumer接口中的方法 void acceptT t):对给定的参数执行此操作 long count:返回此流中的元素数
public class StreamDemo {public static void main(String[] args) {ArrayListString list new ArrayList();list.add(lhao);list.add(zdzhaung);list.add(tgouzi);list.add(ytianhua);list.stream().forEach(System.out::println);long count list.stream().filter(s - s.startsWith(y)).count();System.out.println(count);}
}
Stream流中的收集方法
R collect(Collector collector)