我有一个List<String> abc系列。我需要将其转换为Map<String, TreeSet<String>,其中键是来自abc的排序字符串,而在将排序添加到TreeSet之前,该字符串。使用Collectors.toMap()是可能的
例如。伪码:List<String> abc = ["ala","laa","qwe"]
Map<String, TreeSet<String> = {key = "aal" , values in treeset = "ala" , "laa" key = "eqw" values in treeset = "qwe"}
发布于 2016-11-24 18:57:40
groupingBy是适当的收集器。
Map<String, TreeSet<String>> map =
list.stream().collect(Collectors.groupingBy(
s -> withSortedChars(s),
Collectors.toCollection(TreeSet::new)));发布于 2016-11-24 19:11:56
如果还需要对密钥进行排序,可以在下面进行尝试
public static void main(String[] args) {
List<String> abc = Arrays.asList("ala", "laa", "qwe");
Map<String, TreeSet<String>> sorted = abc.stream()
.collect(Collectors.groupingBy(Utils::sortByChar, TreeMap::new, Collectors.toCollection(TreeSet::new)));
System.out.println(sorted);
}
public static class Utils {
public static String sortByChar(String s) {
char[] arr = s.toCharArray();
Arrays.sort(arr);
return new String(arr);
}
}输出
{aal=[ala, laa], eqw=[qwe]}https://stackoverflow.com/questions/40792811
复制相似问题