本篇文章为你整理了Java8Stream流()的详细内容,包含有 Java8Stream流,希望能帮助你了解 Java8Stream流。
Stream流呢,以前我也有所了解,像一些面试题中也出现过,Java8的新特性,有一块就是这个Stream操作集合,而且在看一些项目中也使用的比较多。但总感觉自己学的一知半解,所以今天打算系统的过一下,再巩固巩固。
Stream是JDK8 API中的新成员,它允许以声明性方式处理集合。
1、把集合转换为流Stream
2、操作Stream流
Stream流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果
一些常见的中间操作和中止操作
中间操作(过滤、映射、限制...),可以多个
映射(转换)接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成为一个新的元素
Stream
Stream不调用终结方法,中间的操作不会执行
Stream只能调用一次终止操作。得到结果后,不能再次使用这个流。
下面是一些小demo
点击查看代码
/**
* 过滤集合中不符合条件的元素
@Test
public void testfilter(){
List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl");
List String aList = stringList.stream().filter(str - str.contains("a")).collect(Collectors.toList());
aList.forEach(System.err::println);
@Test
public void testDistinct(){
List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl","jkl");
List String distinctStr = stringList.stream().distinct().collect(Collectors.toList());
distinctStr.forEach(System.out::println);
//--------------------------------
Product prod1 = new Product(1L, 1, new BigDecimal("15.5"), "面包", "零食");
Product prod2 = new Product(2L, 2, new BigDecimal("20"), "饼干", "零食");
Product prod3 = new Product(2L, 2, new BigDecimal("20"), "饼干", "零食");
ArrayList Product proList = Lists.newArrayList(prod1, prod2, prod3);
List Product distinctProList = proList.stream().distinct().collect(Collectors.toList());
distinctProList.forEach(System.out::println);
* limit(n)获取流中的前n个元素
@Test
public void testLimit(){
List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl","jkl");
List String limitStr = stringList.stream().limit(3).collect(Collectors.toList());
System.out.println(limitStr);
* skip(n)
@Test
public void testSkip(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
List String skipStrList = stringList.stream().skip(2).collect(Collectors.toList());
System.out.println(skipStrList);
* map() 接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成为一个新的元素
@Test
public void testMap(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
List String mapStrList = stringList.stream().map(str - str.concat("_map")).collect(Collectors.toList());
System.out.println(mapStrList);
@Test
public void testSorted(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
List String sortedStrList = stringList.stream().sorted().collect(Collectors.toList());
System.out.println(sortedStrList);
* collect():将流转换为其他形式 list set map
@Test
public void testCollect(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
Set String collectSet = stringList.stream().collect(Collectors.toSet());
System.out.println(collectSet);
* 将流中元素反复结合起来得到一个结果
@Test
public void testReduce(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
Optional String reduce = stringList.stream().reduce((acc, item) - {return acc + item;});
if (reduce.isPresent()) System.out.println(reduce.get());
* 将流中元素反复结合起来得到一个结果
@Test
public void testCount(){
List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");
long count = stringList.stream().count();
System.out.println(count);
以上就是Java8Stream流()的详细内容,想要了解更多 Java8Stream流的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。