2017-04-14 39 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元素。