簡體   English   中英

將兩個 arraylist 與 Java 中的條件進行比較

[英]comparing two arraylist with condition in Java

我從兩個 CSV 文件中打印了兩個數組列表

CSV 1 至 arraylist

BufferedReader br = new BufferedReader(new  InputStreamReader(stream));
String text = br.readLine();
String[] b = text.split(String.valueOf(str));
csv1.add(b[0]);

CSV 2 至 arraylist

BufferedReader br = new BufferedReader(new  InputStreamReader(stream));
String text = br.readLine();
String[] b = text.split(String.valueOf(str));
csv2.add(b[0]);

我需要比較列名,但它們在每個文件中的標記不同。 列表 1 中的 John 列等於列表 2 中的 col smith

ArrayList1 = ["John","Jane","Vehicle","Snack","Ring"]
ArrayList2 = ["Car","Bar","Smith","Doe","Ring"]

例如; list1 中的 John 與 list2 中的 smith 具有完全相同的數據。 我需要檢查 John 是否出現在列表 1 中,然后 smith 應該出現在列表 2 中並檢查該列名稱。

該方法采用兩個列表和兩個提供的字符串,並檢查兩個字符串是否出現在相反的列表中。

public boolean checkName(List<String> list1, List<String> 
    list2, String one, String two) {
     return list1.contains(one) && list2.contains(two) ||
            list1.contains(two) && list2.contains(one);
}

如果您知道哪些列名稱相互鏈接,則可以使用 map。

Map<String,String> map = new HashMap<>();
map.put("John", "Smith");
map.put("Jane", "Doe");
map.put("Vehicle", "Car");
map.put("Snack", "Bar");
map.put("Ring", "Ring");

編輯

假設您已將文件內容讀入示例中給出的列表中,並且您的列表包含:

//code to read file content into lists
//....

ArrayList1 = ["John","Jane","Vehicle","Snack","Ring"]
ArrayList2 = ["Car","Bar","Smith","Doe","Ring"]

您可以遍歷第一個列表並檢查第二個列表:

for (String column : ArrayList1) {
    boolean found = ArrayList2.stream().anyMatch(map.get(column)::equals);
    if (found){
        System.out.println(String.format("Found matching columns: %s -> %s.", column, map.get(column)));
    }
    else {
        System.out.println(String.format("No matching column found for: %s.", column));
    }
}

暫無
暫無

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

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