2015-11-10 21 views
0

我有一個使用hibernate從數據庫中獲取的列表。類型轉換後的比較

List<Object[]> tuples = query.list(); 
for(Object[] tuple : tuples) { 
    myObj temp = new myObj(); 
    temp.setID(((BigInteger)tuple[1]).longValue()); 
    temp.setPIndex((Integer)tuple[2]); 
    temp.setFIndex((Integer)tuple[3]); 
    temp.setSIndex((Integer)tuple[5]); 
    temp.setLat(((BigDecimal)tuple[6])); 
    temp.setLongt((BigDecimal)(tuple[7])); 
    temp.setAlt((BigDecimal)(tuple[8])); 
    List.add(temp); 
} 

其中ID爲龍,p食指,FIndex,SINDEX是Integer和緯度,Longt和Alt是大小數。

另一方面,我有csv文件有數據對應這些數據庫。我從csv文件逐個導入數據並將其與我的列表進行比較,但不知何故,我的比較函數不能正常工作。

private boolean checkData(List<MyObject> list,MyObject1 map){ 

    if (list.size() == 0){ 
     return true; 
    } 

    for (int i = 0 ; i < list.size(); i++){ 
     MyObject temp = (MyObject)list.get(i); 

     if (temp.getAlt().compareTo(map.getType2().getAlt())== 0 && temp.getLat().compareTo(map.getType2().getLat()) == 0 && temp.getLongt().compareTo(map.getType2().getLongt()) == 0 && Integer.valueOf(temp.getPIndex()) == Integer.valueOf(map.getType2().getPIndex())&& Integer.valueOf(temp.getSIndex()) == Integer.valueOf(map.getType2().getSIndex()) && temp.getID().compareTo(map.getCommonTypeData().getID())== 0 && Integer.valueOf(temp.getFIndex()) == Integer.valueOf(map.getType2().getFIndex())){ 
      return false; 
     } 
    } 

    return true; 
} 

我沒有,爲什麼它工作正常進行的條目,而不是給別人打工的想法。

回答

1

更改Integer比較以使用equals()函數。即integer1.equals(integer2)。您正在使用==比較2個Integer對象。這樣做時,java會檢查對象是否相等。而,與equals()方法,它檢查以查看是否它們的值是相等的

Integer a = new Integer(5); 
Integer b = new Integer(5); 

a.equals(b) will be true 
a == b will return false 

希望這有助於