2017-04-14 48 views
0

我試圖根據其中一個屬性的值找到ArrayList中元素的索引,但它總是給我-1。在Arraylist中的索引<ABC>與其他Arraylist比較

//returnABClinklist method returns ABC linked list and i cannot use index of on linked list so am trying to convert it to arraylist 
List<ABC> temp=new ArrayList<ABC>(someMethod.returnABClinklist());  
List<XYZ> other=new ArrayList<XYZ>(); 

比方說ABC有3個字段(rollnumnamestate)和XYZ有5個字段,其中3個是在共同與ABCrollnumnamestatesecondnamedob)。我希望它遍歷一個列表,並根據它們的rollnum值相同來查找另一個列表中的每個對應元素。我的目標是填寫其他相應的字段(namestate)。這是我試過的:

Iterator<ABC> itr = abcList.iterator(); 
while(itr.hasNext()){ 
    ABC tempABC=itr.next(); 
    int index = xyzList.indexOf(tempABC.rollnum()); //this always comes -1 
} 

問題是indexOf()總是返回-1。有人可以幫助我的實施?

實際工作片斷

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class testLists { 

    public static void main(String[] args){ 

     List<XYZ> temp=new ArrayList<XYZ>(); 
     List<ABC> other=new ArrayList<ABC>(); 

     ABC ab=new ABC(); 
     ABC ab1=new ABC(); 
     ab.rollnum=111; 
     ab.name="MAK"; 
     other.add(ab); 

     ab1.rollnum=222; 
     ab1.name="DAK"; 
     other.add(ab1); 

     XYZ abd=new XYZ(); 
     XYZ abd1=new XYZ(); 

     abd1.nameDB="MAK"; 
     abd1.rollnumDB=111; 
     temp.add(abd1); 

     abd.nameDB="PONTY"; 
     abd.rollnumDB=456; 
     temp.add(abd); 

     Iterator<XYZ> itr=temp.iterator(); 
      while(itr.hasNext()){ 
      XYZ tempXYZ=itr.next(); 
      int index=other.indexOf(tempXYZ.getRollnumDB()); //this always comes -1 
      other.get(index) //get the data a 
      //add more values to the tempXYZ 
      }); 
    } 
} 

POJO

public class ABC { 

    int rollnum; 
    String name; 
    String state; 
    public int getRollnum() { 
     return rollnum; 
    } 
    public void setRollnum(int rollnum) { 
     this.rollnum = rollnum; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

    } 
    public String getState() { 
     return name; 
    } 
    public void setState(String name) { 
     this.name = name; 
    } 

} 

注:試圖實現我的XYZ POJO等號,但仍然沒有運氣

+0

@JohnKugelman:先生請將此添加到任何Java程序與PVS將執行。只是希望有人可以幫助很快,或者我可以生成POJO和粘貼在這裏。 – NeverGiveUp161

+0

是的,你可以,也應該提供一個最小的,完整的和可驗證的例子。 –

+0

@JBNizet::)正如你說的先生,給我5分鐘更新。 – NeverGiveUp161

回答

1

indexOf的說法是它隱藏在XYZ對象實例中,但它不是XYZ類型。在你的情況下,你必須遍歷XYZ列表,從中獲得rollnum,然後比較。

一般來說,我建議看看Map。您可以將元素以rollnum作爲關鍵字,以便someMap.get(rollNum)爲您提供相應的XYZ元素。