How to convert set to ArrayList
•
Java
How to add all elements of set < < set < string > >? VaR to an ArrayList < < ArrayList < string > >? Of course, I know it's just a naive way to add them
private static ArrayList<ArrayList<String>> groupAnagrams(ArrayList<String> words){
ArrayList<ArrayList<String>> groupedAnagrams = new ArrayList<>();
AbstractMap<String,String> sortedWords = new HashMap<>();
Set<Set<String>> sameAnagramsSet = new HashSet<>();
for(String word : words){
char[] wordToSort = word.tocharArray();
Arrays.sort(wordToSort);
sortedWords.put(word,new String(wordToSort));
}
for(Map.Entry<String,String> entry: sortedWords.entrySet() ){
Set<String> sameAnagrams = new HashSet<>();
sameAnagrams.add(entry.getKey());
for(Map.Entry<String,String> toCompare : sortedWords.entrySet()){
if(entry.getValue().equals(toCompare.getValue())){
sameAnagrams.add(toCompare.getKey());
}
}
if(sameAnagrams.size()>0){
sameAnagramsSet.add(sameAnagrams);
}
}
//-->this line does not work! return new ArrayList<ArrayList<String>>(sameAnagramsSet);
}
Solution
With Java 8, you can:
return sameAnagramsSet.stream()
.map(ArrayList::new)
.collect(toList());
Although it returns list < ArrayList < string > >
What can it do:
> . Stream() returns stream < set < string > > Map (ArrayList:: new) is equivalent to Map (set – > New ArrayList (set)), basically replace each group with an array list > collect (tolist()) and put all newly created lists in one list
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
