【问题标题】:Getting individual entries of a Set in Java?在 Java 中获取 Set 的单个条目?
【发布时间】:2015-10-07 02:43:00
【问题描述】:

所以我目前在理解如何访问集合时遇到问题,这是否允许?所以我知道我的一组名称包含一组字符对象。我也明白我的toString() 方法调用将这些字符对象转换为字符串,而不是传统的字符串——这就是为什么我有[s,a] 而不是[sa]. 所以我的问题是,是否有办法让我有一个单独的字符串列表。所以我希望我的列表是 = [s, a] 而不是 [ [s,a] ]. 这甚至可能吗?如果这没有意义,我深表歉意;尽管如此,如果您确实理解我的解释,感谢您的时间和帮助。如果你需要我解释更多,我会的。

    //this all works
    Set<Character> names = find(prefix).getRollCall().keySet();
    //[s,a]
    String lists = names.toString();
    //[s,a]
    List<String> sloop = Arrays.asList(lists);
    //[[s,a]]

【问题讨论】:

    标签: java string list object set


    【解决方案1】:

    如果您想将Set&lt;Character&gt; 转换为List&lt;Character&gt;,您可以这样做

    List<Character> list = new ArrayList<Character>(set);
    

    如果您想将Set&lt;Character&gt; 转换为List&lt;String&gt;,您可以这样做

    List<String> list = new ArrayList<String>();
    for (char c : set)
        list.add("" + c);
    

    【讨论】:

      【解决方案2】:

      根本不要使用toString()。遍历Set 的元素并构建您喜欢的任何字符串。

      Set<Character> names = find(prefix).getRollCall().keySet();
      for (Character c : names)
      {
          // whatever you like
      }
      

      【讨论】:

        【解决方案3】:

        让我解释一下你的代码中发生了什么,以防你不清楚:

        String lists = names.toString();
        

        这将调用集合的标准toString 方法,该方法将您的集合转换为标准格式的普通(常规)字符串(即逗号分隔,在括号中)。创建的字符串没有什么特别之处:“[s, a]”。

        List<String> sloop = Arrays.asList(lists);
        

        asList 方法接受一个或多个参数并将它们转换为一个列表。因为您只给了它一个参数lists,所以它创建了一个带有单个字符串元素的列表:("[s, a]")

        然后,稍后,我怀疑您正在做类似的事情:

        System.out.println(sloop);
        

        这再次调用集合的标准toString 方法(在本例中为List sloop)并再次创建一个逗号分隔、括号括起来的标准字符串:“[[s, a]]”

        所以,其中大部分可能不是您想要的。您的lists 变量不是List,而是String,我认为这不是您想要的。

        如果您只是想将您的字符集转换为字符串列表,那么这在 Java 8 中非常简单:

        List<String> lists = names.stream().map(Character::toString).collect(Collectors.toList());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-06
          • 2023-01-28
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 2017-09-23
          • 1970-01-01
          相关资源
          最近更新 更多