我试图进行字谜排序,直到这里我才这样做:
我对string
中的每个array
进行了排序,并将其存储到hashmap
中。
现在我有一个带键的字符串作为字符串,其值为该字符串的字谜。
以下是代码:
public static void anagramSort(String[] s){
HashMap<String, Set<String>> h=new HashMap<String, Set<String>>();
String temp[]=new String[s.length];
Set<String> result=new LinkedHashSet<String>();
for(int i=0;i<s.length;i++){
char[] c=s[i].toCharArray();
Arrays.sort(c);
temp[i]=new String(c);
if(h.containsKey(temp[i])){
Set<String> s1=new TreeSet<String>();
s1.addAll(h.get(temp[i]));
s1.add(s[i]);
h.put(temp[i], s1);
}
else{
Set<String> s2=new TreeSet<String>();
s2.add(s[i]);
h.put(temp[i], s2);
}
}
System.out.println(h);
}
现在我想将hashmap的所有这些值放入字符串数组或集合中,以便所有的字谜都在一起。
我试图将它们(在hashmap中的值)放在一个集合中,但它变得越来越笨拙。
真诚地感谢任何帮助。
答案 0 :(得分:1)
您可以遍历values()
并将其收集到List
:
Map<String, Set<String>> h = ...; // The map created in the OP
List<String> allAnagrams = new LinkedList<>();
for (Set<String> anagrams : h.values()) {
allAnagrams.addAll(anagrams);
}