java8 lambda式 メモ
java8 lambda式 メモいまだにJava8のlambda式は使いこなせていない。でも少し学習したので自分用にメモ。肝はStreamである。Streamは中間操作と終端操作の処理があり、終端操作は一つのStreamに1回だけ実行できる。中間操作には、filter, map flaMap, paralel, limit, skipがあり、終端操作にはanyMatch, allMatch,Max, Min, reduce, forEach, count,findfirst,collect。がある。終端操作でもこのcollectが一番使われるのではないだろうか。collectは簡単に言うとstreamをあるコレクションにまとめることである。例:csv to map (CSVあああを含む行の2列目をキー、1列目をその値でMapに格納) try(BufferedReader csv = Files.newBufferedReader(Paths.get(filename),Charset.forName("Windows-31j"))){ mapSyainName = csv.lines().skip(2).filter(s -> !(s.contains("あああ"))).map(line -> line.split(",")).collect(HashMap::new, (map, line) -> map.put(line[1].trim(), line[0]), HashMap::putAll);} catch(Exception e){}例:map to list( list to map はネットに参考コードがあるがどういうわけかmap to listがほとんどないので。mapを名前でソートしてListに格納)Map<Map<String, String>,Map<String,Object>> mapMap = new HashMap<>(); //<<名前=?????、年齢=999, 住所=????????>>などList<Map<String, Object>> listList = new ArrayList<>();listList = mapMap.getMap().entrySet().stream().sorted((a,b)-> a.getValue().get("名前").toString().compareTo(b.getValue().get("名前").toString())).map(e -> e.getValue()).collect(Collectors.toList());