簡體   English   中英

Java:清單 <List<String> &gt; list = new ArrayList &lt;&gt;();

[英]Java: List<List<String>> list = new ArrayList<>();

如何將包含相同確切值的列表中的所有列表分組。

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

此列表包含list1 list2 list3等。。。如果沒有對list3.get(0)等進行檢查,我想查找list1.get(0)是否與list2.get(0)相同。如果我在每個列表中找到相同的值,則需要對列表進行分組。 例如,如果為true,則將list1和list3以及其他發現的添加到

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

現在使用list2.get(0)檢查是否等於其他(如果是)將它們分組並將其添加到注釋器中:

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

我到目前為止所取得的成就:

    private static void findEqualLists(List<List<String>> list) {

    int i = 0;
    for (List<String> list1 : list) {
        if (!Collections.disjoint(list1, list.get(i))) {
            System.out.println(list1.get(0)+list.get(i).get(0));
        }else{
            System.out.println(list1.get(0)+list.get(i).get(0));
        }
        i++;
    }
}

價值范例:

list = {{2017-02,jhon,car},{2017-03,maria,car},{2017-03, boy, car}, {2017-01,arya, car}, {2017-02, girl, car}}

輸出:

Group1:
2017-03,maria,car
2017-03, boy, car

Group2:
2017-02,jhon,car
2017-02, girl, car

Group3
2017-01,arya, car

你想要Collectors.groupingBy

private static Map<String, List<List<String>>>
            findEqualLists(List<List<String>> list) {

    return list.stream().collect(Collectors.groupingBy(l -> l.get(0)));
}

返回的Map將使用l.get(0)作為唯一鍵,每個對應的值僅是那些第一個元素與該鍵匹配的List的List。

暫無
暫無

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

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