2016-12-21 97 views
-1

我的目的是比較兩個excel列表並刪除那些非重複的列表。在我的代碼中,我首先將第二個列表添加到第一個列表中。然後我想通過第一個循環來識別每個元素,在同一個循環中,我想選擇使用第一個元素,我確定要循環低谷整個列表,看看它是否可以找到它的任何重複,如果它發現它將其添加到新列表中。最後,我想刪除這兩個列表並保存新列表,以便重新編號。比較excel中的兩個列表並刪除非java中的重複項

public void compareLists(){ 

    getOutCells1().addAll(getOutCells2()); 

    for(int i =0;i<getOutCells1().size();i++){ 

     getOutCells1().get(i); 

     for(int e=0;e<getOutCells1().size();e++){ 

      getOutCells1().get(e); 

      if(getOutCells1().get(e)==getOutCells1().get(i)){ 
       System.out.print(getOutCells1().get(e)+" "); 
      } 
     } 
      } 

     } 

使用:

import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
+0

您使用的是哪個庫? –

回答

0

我不知道如果我理解你的問題很好,但我會盡力回答。 首先我假設你不介意連接它們之前,如果重複項在第一個列表或第二個列表中 - 你只想在連接列表中找到重複項。 如果是這樣的話,你可能想看看這裏爲你實現了很多的錯誤: Identify duplicates in a List

如果你的目標是要找到這兩者都是在第一列表和第二列表中的元素,最簡單的方法是於:

  1. 從第一個列表中刪除重複

  2. 從第二列表中刪除重複

  3. 連接兩個列表和網絡連接第二在連接列表重複(此步驟中,您可以檢查上面的鏈接)

步驟1 & 2你可以做使用Java流:

List<Integer> list = new ArrayList<>(); 
list = getOutCells1().stream() 
       .distinct() 
       .collect(Collectors.toList()); 
+0

一個問題似乎是我無法將整數與這個excel庫文件結合在一起:不兼容的類型。 –

0

我做了以下內容和它的工作。

public void compareLists(){ 
    getOutCells1().addAll(getOutCells2()); 

     for(int i=0;i<getOutCells1().size();i++){ 

      String a=getOutCells1().get(i).toString(); 

      doubleCellList.add(Double.parseDouble(a)); 
     } 

     findDuplicates(doubleCellList); 

     } 

public Set<Double> findDuplicates(List<Double> doubleCellList) 
{ 
    final Set<Double> setToReturn = new HashSet(); 
    final Set<Double> set1 = new HashSet(); 

    for (Double yourInt : doubleCellList) 
    { 
     if (!set1.add(yourInt)) 
     { 
      setToReturn.add(yourInt); 
     } 
    } 

    newDoubleCellList.addAll(setToReturn); 
    return setToReturn; 
} 
相關問題