簡體   English   中英

如何從ArrayList獲取所有行 <ArrayList<String> &gt;在特定列中具有特定值?

[英]How to get all rows from ArrayList<ArrayList<String>> having specific value in specific column?

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Delete
{
    public static void main(String[] args)
    {
         List<List<String>> list = new ArrayList<>();
         list.add(List.of("A","B","C","R"));
         list.add(List.of("E","F","G","F"));
         list.add(List.of("A","B","C","D"));
    }
}

我想獲取第一列中所有具有"A"的行。 在上面的示例list ,結果應僅在第一行和第三行:

["A", "B", "C", "R"]
["A", "B", "C", "D"]

我更喜歡使用Java 8 stream的解決方案。

我的另一個問題, 如何在Java中查找2D ArrayList的列的唯一值? ,可能會提供一些其他上下文。

您可以簡單地使用以下內容:

List<List<String>> rows = list.stream()
                              .filter(l -> l.get(0).contains("A"))
                              .collect(Collectors.toList());

在這里,我們檢查列表的第一個索引是否包含“ A”,然后將結果流收集到列表中。

打印List<List<String>> rows

rows.forEach(System.out::println);

[A,B,C,R]

[A B C D]

如果我正確理解您的要求,則不需要信息流。 List.removeIf方法有點被忽略並且非常有用:

     list.removeIf(inner -> inner.size() <= 0 || ! inner.get(0).equals("A"));

對於另一個索引,例如3,您將需要用3替換兩個出現的0 您可能希望將整個內容包裝在一個方法中。 請注意,這會修改原始列表。 讓我們轉儲修改后的列表以查看結果:

     list.forEach(System.out::println);

打印:

 [A, B, C, R] [A, B, C, D] 

如果您希望將結果顯示在新列表中,則可以使用流,也可以使用ArrayList(Collection)構造函數簡單地復制列表,然后在副本上使用以上內容。

暫無
暫無

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

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