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);
    }

}

 

posted on 2018-01-26 18:00  jis117  阅读(140)  评论(0编辑  收藏  举报

导航