Car オブジェクトのリストがあります。各自動車オブジェクトには、セダン、suv、クーペ、バン、トラックのいずれであるかを示すタイプと、その他の属性があります。私のアプリケーションがこれらを以下にリストされている順序でランク付けすると仮定します
- セダン(最低)
- クーペ
- バン
- SUV
- トラック(最高)
リストの中から最高ランクのタイプを見つけるにはどうすればよいですか。
class Car {
public Car (String type, String model, int year, long mileage){
this.type=type;
this.model = model;
this.year = year;
this.mileage = mileage;
}
private String type; // Sedan, SUV etc
private String model; // Focus, Corolla, Camry, Taurus etc
private int year;
private long mileage;
//getters
}
List<Car> allCars = new ArrayList();
allCars.add(new Car("Coupe", "Focus", 1999, 50000) );
allCars.add(new Car("Sedan", "Camry", 2007, 60000) );
allCars.add(new Car("Truck", "Sierra", 2007, 50000) );
allCars.add(new Car("Truck", "F-150", 2001, 60000) );
allCars.add(new Car("Van", "Sienna", 1999, 40000) );
Java 5 でトラック (最高ランクのタイプの車) を見つける最も効率的な方法は何ですか? 必要に応じて、apache commons api または guava を使用できます。
ループスルーして、一意の型のセットを作成できます。
Set<String> uniqueTypes = new HashSet<String>;
for(Car car: allCars) {
uniqueTypes.add(car.getType);
}
上記のセットを使用して、最大値 (この例ではトラック) を調べるにはどうすればよいですか。Collections.max() は自然順序で最大値を返しますか?