加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何将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())将所有新创建的列表放在一个列表中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读