代码之家  ›  专栏  ›  技术社区  ›  newlearner

比较java中的2个字符串数组,并从两个数组中打印相同的元素

  •  0
  • newlearner  · 技术社区  · 9 年前

    下面是我到目前为止的工作,我使用了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();
                }
            }
        }
    
    }
    
    }
    

    1 回复  |  直到 9 年前
        1
  •  1
  •   fg78nc    9 年前

    问题是,您正在重新编写数组,而不是向其中添加数据。

    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();
            }
        }
    }