zoukankan      html  css  js  c++  java
  • java8 stream lambda 一个例子

    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class Cleaner6 {
    
        public static void main(String[] args) throws IOException, InterruptedException {
            String filePath = args[0];
    
            File originalFodler = new File(filePath);
            String[] fileNames = originalFodler.list();
    
            List<String> keepList = Stream.of(fileNames)
                    .collect(Collectors.groupingBy(t -> t.split("_")[0], 
                            Collectors.groupingBy(t -> t.split("_")[2])))
                    .entrySet().stream().flatMap(p -> {
                        Map<String, List<String>> map = p.getValue();
                        String maxKey = Collections.max(map.keySet());
                        return map.get(maxKey).stream();
                    }).collect(Collectors.toList());
    
            List<String> deleteList = new ArrayList<String>();
            Collections.addAll(deleteList, fileNames);
            deleteList.removeAll(keepList);
            
              
              deleteList.parallelStream().forEach(a->{          
                try {
                    Files.delete(Paths.get(filePath + "\" + a));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
             
    
            System.out.println(fileNames.length);
            System.out.println(keepList.size());
            System.out.println(deleteList.size());
        }
    
    }

    两次group,一次flatmap,并行 foreach。

    感悟:stream出现其实是颠覆循环

  • 相关阅读:
    动态可配置表单的设计构思
    mysql之视图
    mysql学习之数据备份和恢复
    mysqli操作
    mysql登录出现1045错误修改方法
    mysql之简单的多表查询
    sql优化的方法总结
    mysql语句操作
    linux 批量替换文件内容
    zend framework 数据库操作(DB操作)总结
  • 原文地址:https://www.cnblogs.com/caihemm/p/10591717.html
Copyright © 2011-2022 走看看