java 8 Stream来映射

时间:2018-02-27 15:20:15

标签: java-8 maps java-stream

我想将以下内容转换为功能程序。请帮助简化以下代码。

Map <String, TreeSet<Double>> cusipMap = new HashMap<>();
        String[] key = new String[1];
        try {
            Files.lines(Paths.get("C:\\CUSIP.txt")).
            forEach(l -> {
                if (isCUSIP(l)) {
                    if (cusipMap.get(l) == null )
                        cusipMap.put(l, new TreeSet<Double>());
                    key[0] = l;
                } else {
                    cusipMap.get(key[0]).add(Double.valueOf(l));

                }
            });
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:1)

试试这个

 try {
     Map<String, TreeSet<Double>> result = Files.lines(Paths.get("C:\\CUSIP.txt"))
    .collect(Collectors.groupingBy(Function.identity(), Collector.of(                   
TreeSet::new,               
(TreeSet<Double> tree, String s) -> {tree.add(Double.valueOf(s));},                 
(TreeSet<Double> tree, TreeSet<Double> s) -> {tree.addAll(s); return tree;}
                    )));        
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }