zoukankan      html  css  js  c++  java
  • JAVA 8 STREAM

    package japan.example.test;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    import lombok.Data;
    
    public class StreamTests {
    
        public static void main(String[] args) {
    
            StreamTests test = new StreamTests();
    
            test.test(test.data());
        }
    
        public List<ResponseData> data() {
            ResponseData data = new ResponseData();
    
            data.serialno = "0011";
            data.setStatus("succ");
    
            List<ResponseData> list = new ArrayList<>();
            list.add(data);
    
            data = new ResponseData();
            data.setSerialno("0011");
            data.setStatus("fail");
    
            list.add(data);
    
            data = new ResponseData();
            data.setSerialno("0012");
            data.setStatus("wait");
    
            list.add(data);
            return list;
        }
    
        public void test(List<ResponseData> dataarray) {
            Map<String, List<String>> counting = dataarray.stream().
                    collect(Collectors.groupingBy(ResponseData::getSerialno,
                    Collectors.mapping(ResponseData::getStatus, Collectors.toList())));
    
            Map<String, List<ResponseData>> conuntink = dataarray.stream()
                    .collect(Collectors.groupingBy(ResponseData::getSerialno, Collectors.toList()));
    
            counting.entrySet().forEach(x -> {
                String key = x.getKey();
                List<String> val = x.getValue();
    
                System.err.println(key + val);
            });
        }
    }
    
    @Data
    class ResponseData {
        String serialno;
        String status;
    }
    @Data
    class Item {
        Long id;
        int count;
        BigDecimal price;
    
        public Item(Long id, int count, BigDecimal price) {
            this.id = id;
            this.count = count;
            this.price = price;
        }
    
        public static void main(String[] args) {
            List<Item> items = Arrays.asList(//
                    new Item(1000L, 2, new BigDecimal("10.00")), //
                    new Item(1001L, 2, new BigDecimal("11.00")), //
                    new Item(1001L, 3, new BigDecimal("11.00")), //
                    new Item(1002L, 2, new BigDecimal("12.00")), //
                    new Item(1002L, 2, new BigDecimal("12.00")), //
                    new Item(1002L, 2, new BigDecimal("12.00")));
    
            Map<Long, List<BigDecimal>> datas = items.stream().collect(Collectors.groupingBy(Item::getId, Collectors.mapping(Item::getPrice, Collectors.toList())));
            System.err.println(datas);
    
            Map<Long, BigDecimal> prices = items.stream().collect(Collectors.groupingBy(Item::getId, Collectors.mapping(Item::getPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
            System.err.println(prices);
        }
    
    }
  • 相关阅读:
    一个好用的网站生成工具
    golang sync.Cond 类
    go语言的一些特性
    git 指令如何撤销一次merge
    k8s学习(二)——etcdctl工具的使用
    python numpy array 的一些问题
    (转) Python Generators(生成器)——yield关键字
    shell 括号学习
    zsh
    vim 常用命令总结
  • 原文地址:https://www.cnblogs.com/jpit/p/8360808.html
Copyright © 2011-2022 走看看