【问题标题】:Convert Enumeration to a Set/List将枚举转换为集合/列表
【发布时间】:2011-08-02 10:06:40
【问题描述】:

是否有一些单线桥接方法可以将给定的枚举转储到java.util.Listjava.util.Set

Arrays.asList()Collection.toArray() 这样的内置内容应该存在于某处,但我无法在 IntelliJ 调试器的评估器窗口中找到它(以及 Google/SO 结果)。

【问题讨论】:

    标签: java collections conventions


    【解决方案1】:

    您可以使用Collections.list() 在一行中将Enumeration 转换为List

    List<T> list = Collections.list(enumeration);
    

    没有类似的方法来获取Set,但是你仍然可以一行完成:

    Set<T> set = new HashSet<T>(Collections.list(enumeration));
    

    【讨论】:

    • 不知何故我在潜伏在自动完成下拉菜单中时错过了这个方法。谢谢!
    【解决方案2】:

    这个怎么样:Collections.list(Enumeration e) 返回一个ArrayList&lt;T&gt;

    【讨论】:

      【解决方案3】:

      我需要同样的东西,这个解决方案工作正常,希望它也可以帮助别人

      Enumeration[] array = Enumeration.values();
      List<Enumeration> list = Arrays.asList(array);
      

      然后你可以得到你的枚举的 .name()。

      【讨论】:

      • 您的答案显示了如何将数组转换为列表,并且仅发生在您有一个枚举数组的情况下。问题是关于枚举->列表转换。
      【解决方案4】:

      有一个将枚举转换为列表的简单示例。为此,我使用了Collections.list(enum) 方法。

      public class EnumerationToList {
      
          public static void main(String[] args) {
              Vector<String> vt = new Vector<String>();
              vt.add("java");
              vt.add("php");
              vt.add("array");
              vt.add("string");
              vt.add("c");
      
              Enumeration<String> enm = vt.elements();
              List<String> ll = Collections.list(enm);
              System.out.println("List elements: " + ll);
          }
      
      }
      

      参考:How to convert enumeration to list

      【讨论】:

        【解决方案5】:

        如果你需要Set而不是List,你可以使用EnumSet.allOf()

        Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);
        

        更新:JakeRobb 是对的。我的答案是关于 java.lang.Enum 而不是 java.util.Enumeration。对不起,不相关的答案。

        【讨论】:

        • 我很确定提问者问的是 java.util.Enumeration,它是 Iterator 的旧表亲,而不是 java.lang.Enum,当你使用“enum”关键字时会得到的东西。
        • 我在 google 上搜索了“java convert enum into a set”,这个线程作为第一个响应返回。 @Timur 得到我的支持。
        【解决方案6】:

        使用番石榴时(参见doc)有Iterators.forEnumeration。给定Enumeration x,您可以执行以下操作:

        获得一个不可变的集合:

        ImmutableSet.copyOf(Iterators.forEnumeration(x));
        

        获取不可变列表:

        ImmutableList.copyOf(Iterators.forEnumeration(x));
        

        得到一个hashSet:

        Sets.newHashSet(Iterators.forEnumeration(x));
        

        【讨论】:

          【解决方案7】:

          Apache commons-collections 中也有 EnumerationUtils.toList(enumeration)

          【讨论】:

            猜你喜欢
            • 2013-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-21
            • 2021-01-04
            • 2015-02-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多