太仓网站制作书生,wordpress在哪修改代码,京东这样的网站怎么做,合肥企业网站建设专家在Java 8及以后的版本中#xff0c;引入了新的Stream API#xff0c;这个API提供了一组新的操作方法#xff0c;可以便捷
地对Java集合进行过滤、映射、排序、分组等操作。
在Stream API中主要分中间操作#xff0c;和终止操作
中间操作是对流进行处理但不产生最终结果的…在Java 8及以后的版本中引入了新的Stream API这个API提供了一组新的操作方法可以便捷
地对Java集合进行过滤、映射、排序、分组等操作。
在Stream API中主要分中间操作和终止操作
中间操作是对流进行处理但不产生最终结果的操作。中间操作可以被连续地串联起来形成一个操作流水线最终由终止操作来触发流的执行。中间操作是懒执行的只有在触发终止操作时中间操作才会被执行中间操作函数还有对应的子中间操作函数可调用
简单一句话就是Stream在中间操作流转变化所以中间操作方法都是返回流
终止操作是用于触发流流水线执行并产生最终结果的操作。它会产生一个非流的结果如集合、数组、单个元素或者副作用。终止操作是惰性求值的也就是说只有在调用终止操作时中间操作才会被执行。这种设计可以实现更高效的数据处理避免不必要的计算。
简单一句话就是Stream在终止操作决定返回什么值
常用的中间操作
filter根据指定的条件对流中的元素进行过滤根据谓词Predicate对流中的元素进行筛选。 ListInteger numbers Arrays.asList(1, 2, 3, 4, 5);ListInteger filteredNumbers numbers.stream().filter(n - n % 2 0) // 筛选出偶数.collect(Collectors.toList()); map对流中的每个元素应用一个函数将其映射为另一个元素。方法需要传函数式接口 Function 类型的参数该函数接受一个输入元素并返回一个经过映射处理后的输出元素流。flatMap将流中的每个元素映射为一个流然后将这些流扁平化为一个新的流。方法需要传递一个 Function 类型的参数该函数接受一个元素作为输入并返回一个包含多个元素的流 ListString words Arrays.asList(Hello, World, Java);ListCharacter letters words.stream().flatMap(word - word.chars().mapToObj(c - (char) c)).collect(Collectors.toList());System.out.println(letters);
//输出[H, e, l, l, o, W, o, r, l, d, J, a, v, a] distinct去除流中重复的元素。sorted对流中的元素进行排序。参数Comparator返回流 sorted(Comparator.comparing(类型名称::类型属性))//默认数字排序和按照字母顺序排序 peek对流中的每个元素执行一些操作接受一个Consumer参数如打印或调试。注意peek方法不能用于修改元素limit限制从流中获取的元素数量。skip跳过流中的前几个元素。takeWhile从流中获取满足指定条件的元素遇到第一个不满足条件的元素就停止获取。根据谓词Predicate对流中的元素进行筛选注意Java9开始使用dropWhile跳过从流中满足指定条件的元素遇到第一个不满足条件的元素开始获取。根据谓词Predicate对流中的元素进行筛选注意Java9开始使用
常用的终止操作
collect将流中的元素收集到一个集合或者单个对象中。forEach对流中的每个元素执行指定的操作。无返回值只改变当前集合reduce根据某个规约操作如求和、求最大值等来合并流中的元素,最终将流归约为一个值或一个 Optional 对象。例子使用reduce操作传入初始值0和一个Lambda表达式作为累加器函数。Lambda表达式接收两个参数a和b相加后返回结果。reduce操作从流的第一个元素开始将该元素作为初始值然后针对列表中的每个元素依次执行累加器函数。最终得到所有元素的累加和这里的计算相当于调用sum函数 int sum numbers.stream().reduce(0, (a, b) - a b);count返回流中元素的数量。返回long max/min返回流中的最大值/最小值。参数Comparator返回Optional对象 ListInteger numbers Arrays.asList(1, 10, 5, 8, 3);OptionalInteger max numbers.stream()//如果流为空则返回一个空的 Optional 对象.max(Comparator.naturalOrder());//Comparator.naturalOrder() 比较器该比较器使用元素的自然顺序进行比较。// 输出 10
max.ifPresent(System.out::println);//ifPresent 方法判断结果是否存在如果存在则打印最大值。 anyMatch/allMatch/noneMatch判断流中的元素是否满足某个条件。参数谓词Predicate返回布尔值findFirst/findAny找到流中的第一个元素或者任意元素。方法返回一个 Optional 对象findAny是随机取toArray将流中的元素转换为数组。sum:求和返回对应中间函数调用的数据类型 如 ListStudent students Arrays.asList(new Student(Tom, 80),new Student(Jerry, 90),new Student(Mickey, 70)
);int sum students.stream().mapToInt(Student::getScore)//这里和map传的FUNCTION类型参数.sum();
理解这些操作还需要理解几个名词
1.谓词Predicate 谓词是一个函数接口它接受一个参数并返回一个布尔值。一般用于filter,takeWhile与dropWhile
2.Consumer Consumer 是一个函数式接口在 Java 中属于 java.util.function 包下。它定义了一个具有一个输入参数的操作并且没有返回值。一般用于forEach与peek
Consumer 接口有一个抽象方法 accept(T t)该方法接受一个输入参数并且对该参数进行处理操作。
3.ComparatorComparator是Java中用于比较对象的接口。它定义了比较两个对象的规则用于在排序、查找等操作中确定对象的顺序。一般用于sorted ,max,min
Comparator接口有一个用于比较的方法compare(T obj1, T obj2)。该方法接受两个参数并返回一个整数值表示比较结果的大小关系。
4.函数式接口 Function 类型的参数该接口接受一个输入元素并返回指定类型的元素流。
一般用于map flatMap 等map相关函数
5.归约reduce操作 其中最常用的形式接受一个二元操作符BinaryOperator作为参数来完成归约操作,这个下篇文章写 文章转载自: http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn http://www.morning.rnkq.cn.gov.cn.rnkq.cn http://www.morning.gywfp.cn.gov.cn.gywfp.cn http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn http://www.morning.qjxxc.cn.gov.cn.qjxxc.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.tpfny.cn.gov.cn.tpfny.cn http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.brps.cn.gov.cn.brps.cn http://www.morning.qbmpb.cn.gov.cn.qbmpb.cn http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.jjnql.cn.gov.cn.jjnql.cn http://www.morning.qsdnt.cn.gov.cn.qsdnt.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.bsgfl.cn.gov.cn.bsgfl.cn http://www.morning.nrll.cn.gov.cn.nrll.cn http://www.morning.tftw.cn.gov.cn.tftw.cn http://www.morning.cjcry.cn.gov.cn.cjcry.cn http://www.morning.dhqzc.cn.gov.cn.dhqzc.cn http://www.morning.yhwyh.cn.gov.cn.yhwyh.cn http://www.morning.jtybl.cn.gov.cn.jtybl.cn http://www.morning.gyqnp.cn.gov.cn.gyqnp.cn http://www.morning.xrftt.cn.gov.cn.xrftt.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.ljngm.cn.gov.cn.ljngm.cn http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn http://www.morning.fbqr.cn.gov.cn.fbqr.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.phechi.com.gov.cn.phechi.com http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.qqnh.cn.gov.cn.qqnh.cn http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn http://www.morning.qkxt.cn.gov.cn.qkxt.cn http://www.morning.fhkr.cn.gov.cn.fhkr.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.mhcft.cn.gov.cn.mhcft.cn http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.mcndn.cn.gov.cn.mcndn.cn http://www.morning.nlqmp.cn.gov.cn.nlqmp.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.rgzc.cn.gov.cn.rgzc.cn http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn http://www.morning.kysport1102.cn.gov.cn.kysport1102.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.rwjtf.cn.gov.cn.rwjtf.cn http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn http://www.morning.tnbas.com.gov.cn.tnbas.com http://www.morning.xtlty.cn.gov.cn.xtlty.cn http://www.morning.tbstj.cn.gov.cn.tbstj.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.nggry.cn.gov.cn.nggry.cn http://www.morning.bflwj.cn.gov.cn.bflwj.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.hcxhz.cn.gov.cn.hcxhz.cn http://www.morning.iknty.cn.gov.cn.iknty.cn http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.bsqth.cn.gov.cn.bsqth.cn http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn http://www.morning.gcysq.cn.gov.cn.gcysq.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn