簡體   English   中英

在java中將List的List轉換為List

[英]Convert List of List into list in java

List<List<String>> superlist = new ArrayList<List<String>>();

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

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

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

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

List<String> result= new ArrayList<>();

現在我想創建一個新列表,其中包含superList中的所有值。 這里的結果應該包含a1,a2,b1,b2,c1,c2

嘗試這樣使用flatMap

List<List<Object>> list = 
List<Object> lst = list.stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

如果您使用的是 Java < 8(並且不能使用Stream s),則可以使用 Guava 的Iterables.concat在單行中執行此操作:

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

現在經過一些研究,我找到了這種方式。

您必須遍歷superlist List對象中的每個List才能獲取所有內容。 您可以使用addAll()方法將每個列表的內容復制到您的新List

List<String> result = new ArrayList<String>();
for (List<String> list : superlist) {
    result.addAll(list);
}

這對我有用!

List<String> result= new ArrayList<>();
    
    superlist.stream().forEach(
            
            n->result.addAll(n)
            );
    
    System.out.println(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM