java8 新特性 Stream流 分组 排序 过滤 多条件去重
- private static List<User> list = new ArrayList<User>();
- public static void main(String[] args) {
- list = Arrays.asList(
- new User(1, "a", 10),
- new User(4, "d", 19),
- new User(5, "e", 13),
- new User(2, "b", 14),
- new User(3, "a", 10),
- new User(6, "f", 16)
- );
- long start = System.currentTimeMillis();
- order();
- println(String.format("耗时[%s]毫秒", (System.currentTimeMillis() - start)));
- }
- /**
- * 多条件去重
- * @param list
- */
- public static void order() {
- list.stream().collect(Collectors.collectingAndThen(
- Collectors.toCollection(() -> new TreeSet<>(
- Comparator.comparing(o -> o.getAge() + ";" + o.getName()))), ArrayList::new)).forEach(u -> println(u));
- }
- public static void group() {
- Map<Integer, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getAge));
- System.out.println(collect);
- }
- /**
- * filter过滤
- * @param list
- */
- public static void filterAge() {
- list.stream().filter(u -> u.getAge() == 10).forEach(u -> println(u));
- }
- /**
- * sorted排序
- */
- public static void stord() {
- list.stream().sorted(Comparator.comparing(u-> u.getAge())).forEach(u -> println(u));
- }
- /**
- * limit方法限制最多返回多少元素
- */
- public static void limit() {
- list.stream().limit(2).forEach(u -> println(u));
- }
- /**
- * 不要前多n个元素,n大于满足条件的元素个数就返回空的流
- */
- public static void skip() {
- list.stream().skip(2).forEach(u -> println(u));
- }
- // 最大值 最小值
- public static void statistics() {
- Optional<User> min = list.stream().min(Comparator.comparing(User::getUserId));
- println(min);
- Optional<User> max = list.stream().max(Comparator.comparing(User::getUserId));
- println(max);
- }
- // 统计
- public static void summarizingInt(){
- IntSummaryStatistics statistics = list.stream().collect(Collectors.summarizingInt(User::getAge));
- double average = statistics.getAverage();
- long count = statistics.getCount();
- int max = statistics.getMax();
- int min = statistics.getMin();
- long sum = statistics.getSum();
- println(average);
- println(count);
- println(min);
- println(sum);
- println(max);
- }
- /**
- * 转set
- */
- public static void toSet() {
- Set<User> collect = list.stream().collect(Collectors.toSet());
- Iterator<User> iterator = collect.iterator();
- while(iterator.hasNext()) {
- System.out.println(iterator.next().getUserId());
- }
- }
- /**
- * 转map
- */
- public static void toMap() {
- Map<Integer, User> collect = list.stream().collect(Collectors.toMap(User::getUserId, u -> u));
- for (Integer in : collect.keySet()) {
- User u = collect.get(in);//得到每个key多对用value的值
- println(u);
- }
- }
- /**
- *map
- */
- public static void map() {
- list.stream().map(User::getUserId).forEach(userId -> println(userId));
- list.stream().mapToInt(User::getAge).forEach(userId -> println(userId));
- list.stream().mapToDouble(User::getUserId).forEach(userId -> println(userId));
- list.stream().mapToLong(User::getUserId).forEach(userId -> println(userId));
- }
- /**
- * 查找与匹配
- * allMatch方法与anyMatch差不多,表示所有的元素都满足才返回true。noneMatch方法表示没有元素满足
- */
- public static void anyMatch() {
- boolean anyMatch = list.stream().anyMatch(u -> u.getAge() == 100);
- boolean allMatch = list.stream().allMatch(u -> u.getUserId() == 10);
- boolean noneMatch = list.stream().noneMatch(u -> u.getUserId() == 10);
- println(anyMatch);
- println(allMatch);
- println(noneMatch);
- }
- /**
- * reduce操作
- */
- public static void reduce() {
- Optional<Integer> sum = list.stream().map(User::getAge).reduce(Integer::sum);
- Optional<Integer> max = list.stream().map(User::getAge).reduce(Integer::max);
- Optional<Integer> min = list.stream().map(User::getAge).reduce(Integer::min);
- println(sum);
- println(max);
- println(min);
- }
- /**
- * 公共输出
- * @param c
- */
- public static void println(Object c) {
- System.out.println(c.toString());
- }
java8 新特性 Stream流 分组 排序 过滤 多条件去重的更多相关文章
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- Java8新特性Stream流应用示例
Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...
- Java8新特性 Stream流式思想(二)
如何获取Stream流刚开始写博客,有一些不到位的地方,还请各位论坛大佬见谅,谢谢! package cn.com.zq.demo01.Stream.test01.Stream; import org ...
- java8 新特性Stream流的应用
作为一个合格的程序员,如何让代码更简洁明了,提升编码速度尼. 今天跟着我一起来学习下java 8 stream 流的应用吧. 废话不多说,直入正题. 考虑以下业务场景,有四个人员信息,我们需要根据性 ...
- Java8新特性 Stream流式思想(一)
遍历及过滤集合中的元素使用传统方式遍历及过滤集合中的元素package cn.com.zq.demo01.Stream.test01.Stream; import java.util.ArrayLis ...
- Java8新特性 Stream流式思想(三)
Stream接口中的常用方法 forEach()方法package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods; import jav ...
- Java8 新特性 —— Stream 流式编程
本文部分摘自 On Java 8 流概述 集合优化了对象的存储,大多数情况下,我们将对象存储在集合是为了处理他们.使用流可以帮助我们处理对象,无需迭代集合中的元素,即可直接提取和操作元素,并添加了很多 ...
- Java8新特性——stream流
一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; impo ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
随机推荐
- Android Fragment重要函数
Fragment的常用函数: 一.Fragment对象 1.void setArguments(Bundle args); 这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型 ...
- Android 弹出框Dialog并缩放图片
java代码 Activity: // 调用dialog,参数:1:自身的activity,2:Bitmap bm读取好的图片 MyDialog dialog = new MyDialog(MyAct ...
- Bitmap到底占多少内存
转至:Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存? Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟 ...
- volley4--RequestQueue
源码: /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, V ...
- JavaScript 模块化入门
理解模块 模块打包构建 webpack牛刀小试
- 如何清除SQL 的登录名
复制路径 找到SqlStudio.bin 文件删除即可 SQL Server 2016 版本: C:\Users\%username%\AppData\Roaming\Microsoft\SQL Se ...
- python的逻辑运算符
函数就是特殊的变量(这个变量是不加引号的) 我们 如果直接打印一个函数的名字是直接打印这个函数的内存地址 python的运算符: 首先Python的运算符和其他语言的运算符都是一样的 都有:算数运 ...
- 简说mvc路由
首先我们通过在Global.asax中的Application_Start将路由信息注册到RouteTable的Routes静态属性中.如下代码所示: public class RouteTable ...
- 装饰器( decorate )
装饰器分步解释-形成过程: #-*- coding: UTF-8 -*- #示例1: def deco(p_args): def pack(): print('haha,i am deco fun') ...
- HTML IMG标签SRC为null
今天做项目遇到一个错 研究了半天才发现 其实就是一个小错 稍微注意一下 就能规避 HTML标签<img src="null">这种情况下在chrom的debug下就会报 ...