如何将Set转换为ArrayList
发布时间:2020-12-15 04:19:38 所属栏目:Java 来源:网络整理
导读:如何添加Set Set String的所有元素? var到一个ArrayList ArrayList String?当然我知道只是添加它们的天真方法. private static ArrayListArrayListString groupAnagrams(ArrayListString words){ ArrayListArrayListString groupedAnagrams = new ArrayLis
如何添加Set<<< Set< String>>的所有元素? var到一个ArrayList<<< ArrayList< String>>?当然我知道只是添加它们的天真方法.
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); } 解决方法
使用Java 8,您可以:
return sameAnagramsSet.stream() .map(ArrayList::new) .collect(toList()); 虽然它返回List< ArrayList< String>>. 它能做什么: > .stream()返回Stream< Set< String>>> .map(ArrayList :: new)相当于.map(set – > new ArrayList(set)),基本上用数组列表替换每一组> collect(toList())将所有新创建的列表放在一个列表中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |