Как преобразовать список<Set> в список><Список> в java?

#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());