跳至主要內容

stream

chanchaw小于 1 分钟languagejava

去重并自动编号

public static void main(String[] args) {
    // 演示去重后转MAP
    class Process{
        public String processName;
        public String sid;
        public Process(String processName, String sid){
            this.processName = processName;this.sid = sid;
        }
    }

    Process p01 = new Process("染料","1001");
    Process p02 = new Process("染料","1002");
    Process p03 = new Process("助剂","1003");
    Process p04 = new Process("助剂","1004");
    List<Process> list = new ArrayList<>();
    list.add(p01);list.add(p02);list.add(p03);list.add(p04);

    AtomicInteger i = new AtomicInteger();
    Map<String, Integer> collect = list.stream().map(item -> item.processName).distinct()
        .collect(Collectors.toMap(item -> item, item -> i.incrementAndGet()));
    System.out.println(collect);
}

创建 stream 对象

stream01
stream01

常用的操作方法

stream02
stream02

中间操作

stream03
stream03

终端操作

stream04
stream04

并行流

stream05
stream05

特性

修改原数据

public static void main(String[] args) {
    // 演示 stream 的使用
    Map<String,Integer> map1 = new HashMap<>();
    map1.put("id",1);
    map1.put("age",11);
    List<Map<String,Integer>> list = new ArrayList<>();
    list.add(map1);

    Map<String,Integer> map2 = new HashMap<>();
    map2.put("id",2);
    map2.put("age",12);
    list.add(map2);
    System.out.println("原始集合:" + list.toString());

    List<Map<String, Integer>> newList = list.stream().map(item -> {
        item.put("age", item.get("age") + 1);
        return item;
    }).collect(Collectors.toList());

    System.out.println("lamda后原集合:" + list.toString());
    System.out.println("lamda返回的新集合:" + newList.toString());
}

// 打印结果:
原始集合:[{id=1, age=11}, {id=2, age=12}]
lamda后原集合:[{id=1, age=12}, {id=2, age=13}]
lamda返回的新集合:[{id=1, age=12}, {id=2, age=13}]

实践案例

stream06
stream06