这是我的数组
ArrayList cars = new ArrayList();
cars.add(new vehicles ("CAR","Peugot","3008",12500.00));
cars.add(new vehicles ("CAR","BMW","316",4995.00));
cars.add(new vehicles ("CAR","Ford","Fiesta",2995.00));
我希望有一种方法可以从最便宜的方式将这些按顺序放入,但我不想使用比较方法。也许创建一个临时变量并使用值检查此变量,如果它们更便宜则覆盖这些值。
我试过这个
public static void main(String[] args){
ArrayList carsArray = new ArrayList();
carsArray.add(new vehicles ("CAR","Peugot","3008",12500.00));
carsArray.add(new vehicles ("CAR","BMW","316",4995.00));
carsArray.add(new vehicles ("CAR","Ford","Fiesta",2995.00));
vehicles lowestPrice = (vehicles) carsArray.get(0);
for(vehicles car : carsArray){
if(car.Cost<lowestPrice.Cost){
lowestPrice = car;
}
}
}
然而我仍然犯了一个错误:/&#39; carsArray&#39;在forloop中用红色加下划线
答案 0 :(得分:1)
您可以使用以价格为关键字且车辆对象为值的TreeMap。然后按价格对其进行分类,您可以将车辆的所有信息作为值。
答案 1 :(得分:0)
Car lowestPrice = cars.get(0);
for(Car car : cars) {
if(car.price<lowestPrice.price) {
lowestPrice = car;
}
}
关于带红色下划线的ArrayList ...将其替换为
ArrayList<Vehicles> yourlist = new ArrayList<Vehicles>();
答案 2 :(得分:0)
如果您想使用OP中提到的方法,您可以为static
课程声明vehicles
变量,在contructor
中,您可以检查价格是否低于实际最低价格
但我的建议是使用Comparator
或Comparable
因为这是他们的自然使用。还可以在各种set
方法中更改对象的值,您必须知道
如果你还想这样做。你可以这样做
public static int min_price=Integer.MAX_VALUE;
然后在contructor
方法中
if(price<min_price)min_price=price;
答案 3 :(得分:0)
如果您想对列表中的项目进行排序,可以使用Collections.sort(List<T> list, Comparator<? super T> c)
方法并提供自己的Comparator
class VechiclePriceComparator implements Comparator<vechiles> {
public int compare(vechiles v1, vechiles v2) {
if(v1 == v2) {
return 0;
)
return Double.compare(v1.getPrice(),v2.getPrice());
}
}