石家庄营销网站建设价格,地宝网 网站建设,外包网站多少钱,手机 网站 开发Stream流#xff1f;结合Lambda表达式#xff0c;用于简化集合和数组操作的API。Stream流的一个小例子#xff1a;创建一个集合#xff0c;存储多个姓名#xff0c;把集合中所有以张开头的长度为3的元素存储到一个新的集合并输出。ListString namesne…Stream流结合Lambda表达式用于简化集合和数组操作的API。Stream流的一个小例子创建一个集合存储多个姓名把集合中所有以张开头的长度为3的元素存储到一个新的集合并输出。 ListString namesnew ArrayList();Collections.addAll(names,张若虚,张仲景,李白,王维,张三);System.out.println(names);
//非Stream流//find zhangListString zhangnew ArrayList();for (String name : names) {if(name.startsWith(张))zhang.add(name);}System.out.println(zhang);//find length is 3ListString threenew ArrayList();for (String name : names) {if(name.length()3)three.add(name);}System.out.println(three);
//Stream流//stream way lambda表达式names.stream().filter(s - s.startsWith(张)).filter(s-s.length()3).forEach(s - System.out.println(s));可以看到通过Stream流方法代码简化到一行了。对于这一行Stream流方法代码可以分为三类方法获取Stream流方法、中间方法、终结方法。获取Stream流方法集合得到Stream流使用Stream()方法例如示例的 names.stream()数组得到Stream流a,使用Stream()方法;b,使用Stream.of() //1CollectionString listnew ArrayList();StreamString Streamlistlist.stream();//2MapString,Integer mapsnew HashMap();StreamString StreamKeymaps.keySet().stream();//键的流StreamInteger StreamValmaps.values().stream();//值的流StreamMap.EntryString,Integer StreamMapsmaps.entrySet().stream();//键值对的流//3Integer[] a{1,2,3,4,5};StreamInteger ast Arrays.stream(a);//aStreamInteger ast2Stream.of(a);//b中间方法中间方法也称为非终结方法调用完成后返回新的Stream流支持链式编程。常用中间方法APIfilter对流中的数据进行过滤。limit获取前几个元素。skip跳过前几个元素。distinct去除流中重复的元素(hashCode和equals)。concat合并两个流。Stream流中无法直接修改集合、数组中的数据。终结方法终结方法后流不可以继续使用//执行示例的非终结流输出
System.out.println(names.stream().filter(s - s.startsWith(张)).filter(s - s.length() 3));
System.out.println(names.stream().filter(s - s.startsWith(张)).filter(s - s.length() 3).count());
//控制台
java.util.stream.ReferencePipeline$23d075dc0
2就是说没有添加终结方法会返回一个流stream添加添加终结方法会返回具体内容。常见终结操作forEach流的每个元素执行遍历操作。count返回流中的元素数。end.收集Stream流把Stream流操作后的结果数据转回到集合或者数组中去,因为Stream流中无法直接修改集合、数组中的数据。Stream流是方便操作集合、数组的手段集合、数组才是目的。一般方法collect 可变集合具体方法toList、toSet、toMap、toArray//继续示例的流StreamString strnames.stream().filter(s - s.startsWith(张)).filter(s-s.length()3);ListString z3Liststr.collect(Collectors.toList());//collectListString z3List2str.toList();//toListObject[] arrsstr.toArray();//toArray其中toArray可以指定返回的对象类型就可不使用Object来接收了。 String[] arrsstr.toArray(new IntFunctionString[]() {Overridepublic String[] apply(int value) {return new String[0];}});流只能使用一次收集完就没了stream has already been operated upon or closed