【问题标题】:After sorting a list in Java, how could I access the first element? [duplicate]在 Java 中对列表进行排序后,如何访问第一个元素? [复制]
【发布时间】:2023-03-23 21:09:01
【问题描述】:

我创建了一个具有这些属性和方法的类 Car。我用一个列表来存储几个对象。

package com.company;
import java.util.ArrayList;
import java.util.Collections;

class Car implements Comparable<Car> {
    private String manufacturer;
    private int speed;
    private double price;
    private int year; // manufacture year

    public Car(String manufacturer, int speed, double price, int year) {
        this.manufacturer = manufacturer;
        this.speed = speed;
        this.price = price;
        this.year = year;
    }

    public String getManufacturer() {
        return manufacturer;
    }

    public int getSpeed() {
        return speed;
    }

    public double getPrice() {
        return price;
    }

    public int getYear() {
        return year;
    }

    public String toString() {
        return this.manufacturer + ", speed: " + this.speed + "km/h, price: " + this.price + " USD, year: " + this.year;
    }


    public int compareTo(Car c) {
        if (this.price == c.price)
            return 0;
        else if(this.price > c.price)
            return 1;
        else
            return -1;

    }
}

public class Solution {
    public static void main(String[] args) {
        List<Car> cars = new ArrayList<Car>();
        cars.add(new Car("Audi", 280, 35300, 2018));
        cars.add(new Car("Mercedes-Benz", 155, 80000, 2009));
        cars.add(new Car("Toyota", 155, 18750, 2011));
        cars.add(new Car ("Fiat", 140, 22500, 2000));
        cars.add(new Car ("Land Rover", 209, 90900, 2014));
         for (Car iterator: cars) {
            System.out.println(iterator);
        }

         Collections.sort(cars);
         for (Car iterator: cars) {
             System.out.println(iterator.getPrice());
         }
    }
}

使用 Comparable 接口后,我想访问排序列表的第一个元素,因为我想获得最便宜的汽车,例如。我怎么能这样做?

【问题讨论】:

  • cars.get(0);?
  • 你没有看过 List 或 ArrayList 的文档吗?

标签: java


【解决方案1】:

对于ArrayList,您可以通过这种方式访问​​第一个元素:

cars.get(0);

对于LinkedList

cars.getFirst();

【讨论】:

    【解决方案2】:
    cars.get(0);
    

    但不要忘记,您可以以最低价格拥有多辆汽车:

    Collections.sort(cars);
    
    double minPrice = cars.get(0).price;
    
    for (Car car : cars) {
        if (Double.compare(car.gePrice(), minPrice) != 0)
            break;
        
        System.out.println(car);
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用以下代码来实现。

      cars.get(0);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 2020-08-02
        相关资源
        最近更新 更多