![](/img/trans.png)
[英]Java: Comparing two string arrays and removing elements that exist in both arrays
[英]comparing 2 string array in java and print the same element from the both arrays
下面是到目前為止我的工作,我已經使用了2個csv文件,並制作了2個不同的數組,它們代表2個csv文件數據,現在我想要做的是,我想比較這2個數組並打印相同的vlaues或相同的元素這兩個數組都是我遇到的困難
import java.util.Arrays;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class CSVReaderw {
public static void main(String[] args) {
String csvFile1 = "/Users/Documents/AD.csv";
String csvFile2 = "/Users/Desktop/database.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
String[] ad = null;
String[] database = null;
try {
br = new BufferedReader(new FileReader(csvFile1));
while ((line = br.readLine()) != null) {
// use comma as separator
ad = line.split(cvsSplitBy);
//System.out.println("AD [id= " + ad[2] +"]");
}
System.out.println("second file result starts here");
br = new BufferedReader(new FileReader(csvFile2));
while ((line = br.readLine()) != null) {
database = line.split(cvsSplitBy);
//System.out.println("ID =" + database[0]);
}
List<String> commonListLambda = Arrays.stream(database)
.filter(x -> Arrays.asList(ad).contains(x))
.collect(Collectors.toList());
System.out.println(commonListLambda);
// List<String> commonList = new ArrayList<>();
//
// for(int i = 0; i < ad.length; i++){
// if(Arrays.asList(databse).contains(ad[i]))
// commonList.add(ad[i]);
// }
//
// System.out.println(commonList);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
編輯:在這里查看我們更新的代碼
問題是您要重新重寫數組,而不是向其中添加數據。
while ((line = br.readLine()) != null) {
database = line.split(cvsSplitBy);
通用邏輯是錯誤的,您需要將一個文件中的單元格與另一文件中的單元格進行比較。
請參閱建議的解決方案,我試圖使代碼不言自明。
public class CSVReaderw {
public static void main(String[] args) {
String adDotCsv = "/Users/Documents/AD.csv";
String databaseDotCsv = "/Users/Desktop/database.csv";
String line = "";
String cvsSplitBy = ",";
BufferedReader br = null;
List<String> databaseList = new ArrayList<>();
List<String[]> adList = new ArrayList<>();
try {
br = new BufferedReader(new FileReader(databaseDotCsv));
while ((line = br.readLine()) != null) {
databaseList.addAll(Arrays.asList(line.split(cvsSplitBy)));
}
br = new BufferedReader(new FileReader(adDotCsv));
line = "";
while ((line = br.readLine()) != null) {
adList.add(line.split(cvsSplitBy));
}
List<String[]> commonList = new ArrayList<>();
String cellCInAdFile = null;
for (String[] rowInAdList : adList) {
cellCInAdFile = Arrays.toString(rowInAdList).split(",")[2].trim();
for (String cellAinDatabaseFile : databaseList) {
if (cellCInAdFile.equals(cellAinDatabaseFile.trim())) {
commonList.add(rowInAdList);
}
}
}
for (String[] rowInCommonList : commonList) {
System.out.println(Arrays.asList(rowInCommonList));
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.