#java #list #collections #set
#Ява #Список #Коллекции #набор
Вопрос:
Как мы можем легко преобразовать Listlt;Setgt; в Listlt;Setgt;lt;Списокgt; на java? Контекст: Я столкнулся с этой проблемой, когда я сгенерировал списокlt;Наборgt;, в то время как в функции возврата ожидается списокlt;Наборgt;lt;Списокgt;.
Ответ №1:
Вы заботитесь о порядке в Set
s? Если вы это сделаете, вам придется сначала убедиться, что у вас их нет в качестве наборов. Если вы этого не сделаете, вы можете использовать API потоков Java 8 :
list.stream().map(ArrayList::new).collect(Collectors.toList());
Или for
петля.
Комментарии:
1. LinkedHashSet поддерживает порядок.
2. Верно, реализации набора могут сохранять порядок, но в целом интерфейс набора не гарантирует сохранения порядка.
Ответ №2:
Чтобы преобразовать набор в список, вы можете просто сделать new ArrayListlt;gt;(mySet)
. Так что вы можете сделать что-то вроде:
Setlt;Stringgt; set1 = new HashSetlt;gt;(Arrays.asList("a", "b")); Setlt;Stringgt; set2 = new HashSetlt;gt;(Arrays.asList("c", "d")); Listlt;Listlt;Stringgt;gt; result = new ArrayListlt;Listlt;Stringgt;gt;(); Listlt;Setlt;Stringgt;gt; listOfSets = new ArrayListlt;gt;(); listOfSets.add(set1); listOfSets.add(set2); for (Setlt;Stringgt; set : listOfSets) { result.add(new ArrayListlt;gt;(set)); } System.out.println(result);
Выход: [[a, b], [c, d]]
Комментарии:
1. или
Listlt;Listlt;Stringgt;gt; result = listOfSets.stream().map(ArrayList::new).collect(Collectors.toList());