2015-10-07 2 views
0

У меня возникла проблема с пониманием того, как получить доступ к набору, это даже разрешено? Поэтому я понимаю, что мой набор имен содержит набор объектов Character. Я также понимаю, что мой вызов метода toString() преобразует эти объекты символов в строку, но не в обычную строку, поэтому у меня есть [s,a], а не [sa]. Итак, мой вопрос в том, есть ли способ сделать так, чтобы у меня был список отдельные строки. Поэтому я хочу, чтобы мой список был = [s, a], а не [ [s,a] ]. Возможно ли это? Прошу прощения, если это не имеет смысла; тем не менее, если вы поймете мое искаженное объяснение, спасибо за ваше время и помощь. Если вам нужно, чтобы я объяснил больше, я сделаю это.Получение индивидуальных записей набора в Java?

//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]] 

ответ

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); 
2

Не используйте toString(). Перейдите по элементам Set и создайте любую строку, которая вам нравится.

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

Позвольте мне объяснить, что происходит в вашем коде, в случае, если вы не ясны:

String lists = names.toString(); 

Это вызывает стандартную toString метод для сбора, который преобразует ваш сет обычный (обычный) строка в стандартном формате (т. е. запятая, в скобках). Нет ничего особенного в создаваемой строке: «[s, a]».

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

Метод asList принимает один или более аргументов и преобразует их в список. Потому что вы дали ему только один аргумент lists создает список с одной строки элемента: («[с, а]»)

Потом, позже, я подозреваю, что вы делаете что-то вроде:

System.out.println(sloop); 

Это снова вызывает стандартную toString метод для сбора (в данном случае List шлюп) и снова создает запятую, скобки заключены стандартная строка: «[[с, а]]»

Таким образом, большинство это, вероятно, не то, что вы хотите. Ваша переменная lists не является List, это String, которую я предполагаю не то, что вы хотите.

Если вы просто хотите конвертировать набор символов в списке строк, то это довольно тривиально в Java 8:

List<String> lists = names.stream().map(Character::toString).collect(Collectors.toList()); 
Смежные вопросы