是否可以将对象从对象重新键入到整数

时间:2012-11-27 00:48:03

标签: java parsing object arraylist

我面临将对象重新输入整数的问题。

我的对象Car有2个字符串属性。第一个属性是ID。 我将ID从字符串重新排序为整数

ArrayList<Car> intList = new ArrayList<Car>(); // already filled with objects 

ArrayList<Integer> intList = new ArrayList<Integer>();

for(Car tempInt : items){   
intList.add(Integer.parseInt(tempInt.getID()));
}
Collections.sort(intList); // i sorted id's

我可以将整数重新输入Car对象吗?

for (ItemObject temp : intList) { // HERE I GET THE ERROR

if(temp instanceof Car){
System.out.println("ID : "+((Car)temp).getID())
        }}

这可能吗?我需要排序对象。 谢谢。 小号

2 个答案:

答案 0 :(得分:4)

我认为你从根本上误解了在这种情况下哪些对象。当您创建ArrayList<Integer>时,您不会神奇地保留有关这些整数连接到哪些汽车的任何信息。

认为你要做的是按ID排序Cars,是吗?在这种情况下,您想要的是Comparatorhttp://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html

以下是使用Comparator进行排序的示例:

ArrayList<Car> cars = ...//Filled with cars
Comparator<Car> carSorter = new Comparator<Car>() {
  @Override
  public int compare(Car a, Car b) {
    return a.getID() - b.getID();
  }
};
Collections.sort(cars, carSorter);//After this line, cars will be in order

答案 1 :(得分:0)

我根本不会这样做。如果您允许汽车能够相互比较(通过将ID存储为IntegerCar可以自行排序。请执行以下操作:

public class Car implements Comparable<Car> {
    private String id;
    private String otherString;
    private Integer intId; // this is new

    public Car(String arg0, String arg1) {
        // Add this line to constructor
        intId = Integer.parseInt(id);
    }

    @Override
    public int compareTo(Car arg0) {
        return intId.compareTo(arg0.intId);
    }
}

然后,就这样做:

Collections.sort(carList);
相关问题