java stream多条件排序_java8 新特性 Stream流 分组 排序 过滤 多条件去重

private static List list = new ArrayList();public static voidmain(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)));

}/*** 多条件去重

*@paramlist*/

public static voidorder() {

list.stream().collect(Collectors.collectingAndThen(

Collectors.toCollection(()-> new TreeSet<>(

Comparator.comparing(o-> o.getAge() + ";" + o.getName()))), ArrayList::new)).forEach(u ->println(u));

}public static voidgroup() {

Map> collect =list.stream().collect(Collectors.groupingBy(User::getAge));

System.out.println(collect);

}/*** filter过滤

*@paramlist*/

public static voidfilterAge() {

list.stream().filter(u-> u.getAge() == 10).forEach(u ->println(u));

}/*** sorted排序*/

public static voidstord() {

list.stream().sorted(Comparator.comparing(u-> u.getAge())).forEach(u ->println(u));

}/*** limit方法限制最多返回多少元素*/

public static voidlimit() {

list.stream().limit(2).forEach(u ->println(u));

}/*** 不要前多n个元素,n大于满足条件的元素个数就返回空的流*/

public static voidskip() {

list.stream().skip(2).forEach(u ->println(u));

}//最大值 最小值

public static voidstatistics() {

Optional min =list.stream().min(Comparator.comparing(User::getUserId));

println(min);

Optional max =list.stream().max(Comparator.comparing(User::getUserId));

println(max);

}//统计

public static voidsummarizingInt(){

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 voidtoSet() {

Set collect =list.stream().collect(Collectors.toSet());

Iterator iterator =collect.iterator();while(iterator.hasNext()) {

System.out.println(iterator.next().getUserId());

}

}/*** 转map*/

public static voidtoMap() {

Map 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 voidmap() {

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 voidanyMatch() {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 voidreduce() {

Optional sum =list.stream().map(User::getAge).reduce(Integer::sum);

Optional max =list.stream().map(User::getAge).reduce(Integer::max);

Optional min =list.stream().map(User::getAge).reduce(Integer::min);

println(sum);

println(max);

println(min);

}/*** 公共输出

*@paramc*/

public static voidprintln(Object c) {

System.out.println(c.toString());

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值