Liste Listesini java'daki listeye dönüştürün

List> superlist = new ArrayList>();

    List list1 = new ArrayList();
    list1.add("a1");
    list1.add("a2");

    List list2 = new ArrayList();
    list2.add("b1");
    list2.add("b2");

    List list3= new ArrayList();
    list3.add("c1");
    list3.add("c2");


    superlist.add(list1);
    superlist.add(list2);
    superlist.add(list3);

    List result= new ArrayList();

Now I want to create a new list which contains all the values in superList. Here result should contain a1,a2,b1,b2,c1,c2

8
Bunu kendi başınıza yapmaya teşebbüs ettiniz mi? birkaç foreach döngüsü işi mükemmel şekilde yerine getirmelidir.
katma yazar Davis Broda, kaynak
katma yazar coderz, kaynak

8 cevap

flatMap kullanarak bunu deneyin:

List> list = 
List lst = list.stream()
        .flatMap(x -> x.stream())
        .collect(Collectors.toList());
16
katma

flatMap kullanarak bunu deneyin:

List> list = 
List lst = list.stream()
        .flatMap(x -> x.stream())
        .collect(Collectors.toList());
16
katma

If you're on Java < 8 (and cannot use Streams), you can do this in a one-liner with Guava's Iterables.concat:

List merged = Lists.newArrayList(Iterables.concat(superList));
5
katma

If you're on Java < 8 (and cannot use Streams), you can do this in a one-liner with Guava's Iterables.concat:

List merged = Lists.newArrayList(Iterables.concat(superList));
5
katma
superlist.forEach(e -> result.addAll(e));

Şimdi bazı araştırmalardan sonra, bu yolu buldum.

2
katma
Performans açısından soru için en iyi yöntem hangisidir?
katma yazar Manu Joy, kaynak
superlist.forEach(e -> result.addAll(e));

Şimdi bazı araştırmalardan sonra, bu yolu buldum.

2
katma
Performans açısından soru için en iyi yöntem hangisidir?
katma yazar Manu Joy, kaynak

Tüm içeriği alabilmek için superlist nesnenizdeki her Liste 'yi dolaşmanız gerekir. Her listenin içeriğini yeni Listenize kopyalamak için addAll() yöntemini kullanabilirsiniz:

List result = new ArrayList();
for (List list : superlist) {
    result.addAll(list);
}
2
katma

Tüm içeriği alabilmek için superlist nesnenizdeki her Liste 'yi dolaşmanız gerekir. Her listenin içeriğini yeni Listenize kopyalamak için addAll() yöntemini kullanabilirsiniz:

List result = new ArrayList();
for (List list : superlist) {
    result.addAll(list);
}
2
katma