私はクラスのレベル(理解のためのダミークラス)を持っています。 levelIdに基づいてソートされたTreeMap<Level,Set<String>>
が必要です。 コードの下に見つけてくださいストリームを使用してリストからTreeMapをソートする方法
import java.util.*;
import java.util.stream.Collectors;
public class Level {
int levelId;
public Level(int levelId) {
this.levelId = levelId;
}
public static Level getLevel(String name){
return new Level(name.length());
}
public static void main(String[]args){
Set<String> names=new HashSet<>();
names.add("Mahesh");
names.add("Ram");
names.add("Rita");
Map<Level, Set<String>> map = names.stream().collect(
Collectors.groupingBy(name->Level.getLevel(name),
Collectors.mapping(name->name,Collectors.toSet())));
}
}
私もCollectors.collectingAndThen()
で試してみました。
何か助けていただければ幸いです。
ありがとうございます。
https://docs.oracle.com/javase/8/docs/api/java/util:次に、あなたは
groupingBy
コレクタにマップの工場として、この分離器を使用してTreeMap
を作成するラムダ式を渡す必要があります/stream/Collectors.html#groupingBy-java.util.function.Function-java.util.function.Supplier-java.util.stream.Collector- –ストリームではなくforループを使用します。 –
'Collectors.groupingBy(Level :: getLevel、TreeMap :: new、Collectors.toSet()) ' – 4castle