所以我目前在理解如何访问集合时遇到问题,甚至是允许的?所以我理解我的名字集包含一组Character对象。我也明白我的toString()
方法调用会将这些Character对象转换为String,而不是传统的字符串 - 这就是为什么我有[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]]
答案 0 :(得分:3)
如果您想将Set<Character>
转换为List<Character>
,您可以
List<Character> list = new ArrayList<Character>(set);
如果您想将Set<Character>
转换为List<String>
,您可以
List<String> list = new ArrayList<String>();
for (char c : set)
list.add("" + c);
答案 1 :(得分:2)
根本不使用toString()
。迭代Set
的元素并构建你喜欢的任何字符串。
Set<Character> names = find(prefix).getRollCall().keySet();
for (Character c : names)
{
// whatever you like
}
答案 2 :(得分:1)
让我解释一下代码中发生了什么,万一你不清楚:
String lists = names.toString();
这为集合调用标准toString
方法,该集合将您的集合转换为标准格式的普通(常规)字符串(即括号中的逗号分隔)。创建的字符串没有什么特别之处:&#34; [s,a]&#34;。
List<String> sloop = Arrays.asList(lists);
asList
方法接受一个或多个参数并将它们转换为列表。因为您只给出了一个参数lists
,所以它创建了一个包含单个字符串元素的列表:(&#34; [s,a]&#34;)
然后,我怀疑你做的事情如下:
System.out.println(sloop);
这再次调用集合的标准toString
方法(在本例中为List
sloop)并再次创建逗号分隔,括号括起的标准字符串:&#34; [[s,a ]&#34;
所以,大部分可能不是你想要的。您的lists
变量不是List
,而是String
,我认为它不是您想要的。
如果您只是想将您的字符集转换为字符串列表,那么在Java 8中这非常简单:
List<String> lists = names.stream().map(Character::toString).collect(Collectors.toList());