簡體   English   中英

比較Java中的2個字符串數組,並從兩個數組中打印相同的元素

[英]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.

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