网站建设资讯

NEWS

网站建设资讯

Java8中Stream常用方法有哪些-创新互联

这篇文章主要介绍Java8中Stream常用方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联是一家专注于成都网站设计、做网站、成都外贸网站建设公司与策划设计,祁县网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:祁县等地区。祁县做网站价格咨询:18980820575

Java8 Stream常用方法

Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作。

一、流的初始化与转换:
 Java中的Stream的所有操作都是针对流的,所以,使用Stream必须要得到Stream对象:
 1、初始化一个流:
  Stream stream = Stream.of("a", "b", "c");
 2、数组转换为一个流:
  String [] strArray = new String[] {"a", "b", "c"};
  stream = Stream.of(strArray);
  或者
  stream = Arrays.stream(strArray);
 3、集合对象转换为一个流(Collections):
  List list = Arrays.asList(strArray);
  stream = list.stream();

二、流的操作:


流的操作可以归结为几种:

1、遍历操作(map):


使用map操作可以遍历集合中的每个对象,并对其进行操作,map之后,用.collect(Collectors.toList())会得到操作后的集合。

1.1、遍历转换为大写:
List output = wordList.stream().
    map(String::toUpperCase).


       collect(Collectors.toList());

1.2、平方数:
List nums = Arrays.asList(1, 2, 3, 4);
  List squareNums = nums.stream().
       map(n -> n * n).
     collect(Collectors.toList());


2、过滤操作(filter):


使用filter可以对象Stream中进行过滤,通过测试的元素将会留下来生成一个新的Stream。

2.1、得到其中不为空的String
List filterLists = new ArrayList<>();
filterLists.add("");
filterLists.add("a");
filterLists.add("b");
List afterFilterLists = filterLists.stream()
     .filter(s -> !s.isEmpty())


     .collect(Collectors.toList());

3、循环操作(forEach):
如果只是想对流中的每个对象进行一些自定义的操作,可以使用forEach:
List forEachLists = new ArrayList<>();
forEachLists.add("a");
forEachLists.add("b");
forEachLists.add("c");


forEachLists.stream().forEach(s-> System.out.println(s));

4、返回特定的结果集合(limit/skip):
limit 返回 Stream 的前面 n 个元素;skip 则是扔掉前 n 个元素:
List forEachLists = new ArrayList<>();
forEachLists.add("a");
forEachLists.add("b");
forEachLists.add("c");
forEachLists.add("d");
forEachLists.add("e");
forEachLists.add("f");
List limitLists = forEachLists.stream().skip(2).limit(3).collect(Collectors.toList());


注意skip与limit是有顺序关系的,比如使用skip(2)会跳过集合的前两个,返回的为c、d、e、f,然后调用limit(3)会返回前3个,所以最后返回的c,d,e

5、排序(sort/min/max/distinct):
sort可以对集合中的所有元素进行排序。max,min可以寻找出流中大或者最小的元素,而distinct可以寻找出不重复的元素:

5.1、对一个集合进行排序:
List sortLists = new ArrayList<>();
sortLists.add(1);
sortLists.add(4);
sortLists.add(6);
sortLists.add(3);
sortLists.add(2);
List afterSortLists = sortLists.stream().sorted((In1,In2)->


     In1-In2).collect(Collectors.toList());

5.2、得到其中长度大的元素:
List maxLists = new ArrayList<>();
maxLists.add("a");
maxLists.add("b");
maxLists.add("c");
maxLists.add("d");
maxLists.add("e");
maxLists.add("f");
maxLists.add("hahaha");
int maxLength = maxLists.stream().mapToInt(s->s.length()).max().getAsInt();


System.out.println("字符串长度最长的长度为"+maxLength);

5.3、对一个集合进行查重:
List distinctList = new ArrayList<>();
distinctList.add("a");
distinctList.add("a");
distinctList.add("c");
distinctList.add("d");
List afterDistinctList = distinctList.stream().distinct().collect(Collectors.toList());
其中的distinct()方法能找出stream中元素equal(),即相同的元素,并将相同的去除,上述返回即为a,c,d。

6、匹配(Match方法):
有的时候,我们只需要判断集合中是否全部满足条件,或者判断集合中是否有满足条件的元素,这时候就可以使用match方法:
allMatch:Stream 中全部元素符合传入的 predicate,返回 true
anyMatch:Stream 中只要有一个元素符合传入的 predicate,返回 true


noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true

6.1、判断集合中没有有为‘c’的元素:
List matchList = new ArrayList<>();
matchList.add("a");
matchList.add("a");
matchList.add("c");
matchList.add("d");


boolean isExits = matchList.stream().anyMatch(s -> s.equals("c"));

6.2、判断集合中是否全不为空:
List matchList = new ArrayList<>();
matchList.add("a");
matchList.add("");
matchList.add("a");
matchList.add("c");
matchList.add("d");
boolean isNotEmpty = matchList.stream().noneMatch(s -> s.isEmpty());


则返回的为false

以上是“Java8中Stream常用方法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:Java8中Stream常用方法有哪些-创新互联
网站链接:http://cdweb.net/article/jpegj.html