java stream流式处理_java8中的流式处理数据,stream的使用

package com.hf.mypractice.Javabase;

import com.hf.mypractice.model.User;

import java.util.*;

import java.util.stream.Collectors;

import java.util.stream.Stream;

/**

* @Description: jdk1.8 stream

* @Date: 2019/1/31

* @Auther:

*/

public class Jdk8stream {

/**

* 获取stream的方式:

* // 1、数组

* String[] arr = new String[]{"ab", "cd", "ef"};

* Stream arrStream = Arrays.stream(arr);

* // 2、集合

* List list = Arrays.asList("ab", "cd", "ef");

* Stream colStream = list.stream();

* // 3、值

* Stream stream = Stream.of("ab", "cd", "ef");

* @param args

*/

public static void main(String[] args) {

List list = Arrays.asList(

new User("tom", 13),

new User("jack", 12),

new User("huahua", 18),

new User("huahua", 18),

new User("huahua", 30)

);

/**遍历集合**/

list.stream().forEach(user -> {

System.out.println("name:" + user.getName() + ",age:" + user.getAge());

});

/**遍历数组**/

String[] arr = new String[]{"ab", "cd", "ef","ef"};

Stream arrStream = Arrays.stream(arr);

arrStream.forEach(value -> {

System.out.println("value:" + value);

});

/**遍历值**/

Stream.of(1,2,3,4,5).forEach(i -> {

System.out.println("i:" + i);

});

/**排序操作**/

/**1.正常的lambada操作**/

Collections.sort(list,(user1,user2) -> {

return user1.getAge() - user2.getAge();

});

list.forEach(user -> {

System.out.println("排序后name:" + user.getName() + ",age:" + user.getAge() );

});

/**stram使用sorted()方法排序数据**/

/**指定字段自然排序,按照Comparator定义好的顺序**/

list.stream().sorted(Comparator.comparing(User::getAge)).forEach(user -> {

System.out.println("排序后name:" + user.getName() + ",age:" + user.getAge() );

});

/**指定字段逆序排序**/

list.stream().sorted(Comparator.comparing(User::getAge).reversed()).forEach(user -> {

System.out.println("逆序排序后name:" + user.getName() + ",age:" + user.getAge() );

});

/**指定字段自定义排序的方法**/

list.stream().sorted(Comparator.comparing(User::getAge,(age1,age2) -> {

return age2 - age1;

})).forEach(user -> {

System.out.println("what:" + user.toString());

});

/**filter():使用该方法过滤**/

/**user.getAge() > 13 是过滤条件,相当于if()括号中的内容**/

list.stream().filter((User user) -> user.getAge() > 12).forEach(user -> {

System.out.println("filter -> name:" + user.getName() + ",age:" + user.getAge());

});

/**limit():使用该方法截断**/

/**输出集合前2个元素**/

list.stream().limit(2).forEach(user -> {

System.out.println("limit -> name:" + user.getName() + ",age:" + user.getAge());

});

/**skip():与limit互斥,使用该方法跳过元素,指跳过几个元素**/

list.stream().skip(2).forEach(user -> {

System.out.println("skip -> name:" + user.getName() + ",age:" + user.getAge());

});

/**distinct():使用该方法去重,注意:必须重写对应泛型的hashCode()和equals()方法**/

Arrays.stream(arr).distinct().forEach(value -> {

System.out.println("after distinct:" + value);

});

list.stream().distinct().forEach(user -> {

System.out.println("distinct -> name:" + user.getName() + ",age:" + user.getAge());

});

/***根据上述方法,完成去重+按照年龄大于15以后从小到大+只取前二**/

list.stream().distinct().filter((User user) -> user.getAge() > 15).sorted(Comparator.comparing(User::getAge,(age1,age2) -> {

return age1 - age2;

})).limit(2).forEach(user -> {

System.out.println("输出的结果是name:" + user.getName() + ",age:" + user.getAge());

});

/**对一个集合中去掉所有的奇数**/

List numList = new ArrayList() {{

for (int i = 0; i < 10; i++) {

add(i);

}

}};

//注意:过滤条件中的表示是要保存的

numList = numList.stream().filter(num -> (num % 2 == 0)).collect(Collectors.toList());

numList.forEach(num -> {

System.out.println("偶数为:" + num);

});

/**max,min,sum,avg,count **/

IntSummaryStatistics statistics = list.stream().mapToInt(user -> user.getAge()).summaryStatistics();

System.out.println("最大的:" + statistics.getMax());

System.out.println("平均的:" + statistics.getAverage());

System.out.println("最小的:" + statistics.getMin());

System.out.println("总数:" + statistics.getCount());

System.out.println("总和:" + statistics.getMax());

/**获取第一个元素**/

User user = list.stream().findFirst().get();

System.out.println("第一个元素:" + user.toString());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值