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())
        }}

これは可能ですか?ソートオブジェクトが必要です。ありがとう。S

4

2 に答える 2

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
于 2012-11-27T00:54:21.603 に答える
0

私はそれをこのようにはまったくしません。代わりに、車を相互に比較できるようにする場合(IDをとして保存することによりIntegerCarsは自分自身を並べ替えることができます。次のようにします。

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 に答える