0

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

我有具有 2 个字符串属性的对象 Car。第一个属性是 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())
        }}

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

4

2 回答 2

4

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

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

以下是使用 a 进行排序的示例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
于 2012-11-27T00:54:21.603 回答
0

我根本不会这样做。如果您改为允许汽车能够相互比较(通过将 id 存储为Integer,则Cars 可以自行排序。这样做:

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);
于 2012-11-27T00:56:01.507 回答