我面临将对象重新输入整数的问题。
我的对象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())
}}
这可能吗?我需要排序对象。 谢谢。 小号
答案 0 :(得分:4)
我认为你从根本上误解了在这种情况下哪些对象。当您创建ArrayList<Integer>
时,您不会神奇地保留有关这些整数连接到哪些汽车的任何信息。
我认为你要做的是按ID排序Cars
,是吗?在这种情况下,您想要的是Comparator
:http://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存储为Integer
,Car
可以自行排序。请执行以下操作:
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);