Java8のCollectors.toMap()の使い方
Collectors.toMap()を使うことによって、Listに変換することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
List<Dto> dataList = Arrays.asList( new Dto(1, "sample1"), new Dto(2, "sample2"), new Dto(3, "sample3"), new Dto(4, "sample4") ); Map<Integer, String> map = dataList.stream().collect( Collectors.toMap( d -> d.getAge(), d -> d.getName(), (oldVal,newVal) -> newVal, LinkedHashMap::new)); |
引数の意味は以下の通りです。
引数 | 意味 |
---|---|
第一引数 | Mapのkey |
第二引数 | Mapのvalue |
第三引数 | key重複時に先勝ちか後勝ちか |
第四引数 | Mapインタフェースを実装したクラス |
第三引数は、キーが重複した場合にどちらを優先するかを指定します。上記の場合は後勝ちになります。
1 2 3 4 5 6 |
List<Dto> dataList = Arrays.asList( new Dto(1, "sample1"), new Dto(2, "sample2"), new Dto(3, "sample3"), new Dto(4, "sample4") ); |
dataListを上記に変更するとmapの中身は以下のようになります。
1 |
{1=sample1, 2=sample2, 3=sample3, 4=sample4} |
次に重複しているケースで
1 2 3 4 5 6 |
List<Dto> dataList = Arrays.asList( new Dto(1, "sample1"), new Dto(2, "sample2"), new Dto(3, "sample3"), new Dto(3, "sample4") ); |
dataListを上記に変更するとmapの中身は以下のようになります。
1 |
{1=sample1, 2=sample2, 3=sample4} |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^