【问题标题】:How to sort this ArrayList by various parameters in Java? [duplicate]如何通过 Java 中的各种参数对这个 ArrayList 进行排序? [复制]
【发布时间】:2014-11-07 14:08:12
【问题描述】:

我的驱动程序类中有以下集合:

ArrayList<SoftDrink> drinks = new ArrayList<>();

其中SoftDrink有三个私有实例变量(类中有访问器方法):

String name;
String colour;
int volume;

要求用户输入有关饮料的信息,然后将 SoftDrink 对象添加到 ArrayList 中,如下所示:

drinks.add(new SoftDrink(drinkName, colour, volume));

当用户添加完饮料后,我希望程序打印出用户输入的软饮料列表,首先按名称的字母顺序排序,然后按颜色的字母顺序,然后按体积(升序顺序)。

例子:

Coke Red 500
Coke Silver 500
Fanta Orange 300
Fanta Orange 500

在比较 ArrayList 中的这些对象,然后根据这些不同的参数对它们进行适当排序时,我可以采用的最 Java 的方式是什么?

【问题讨论】:

  • 写一个比较器并做
  • 对于 Java8,这篇文章可能会有所帮助:blog.jooq.org/2014/01/31/… 编写一个易于维护的解决方案。

标签: java sorting arraylist collections


【解决方案1】:

也许你可以试试这样的:

List<SoftDrink>  drinks= new ArrayList<SoftDrink>();

SoftDrink drink;
for(int i=0;i<numberOfDrinks;i++) {
  drink = new SoftDrink();
  drink.setname(...);
  drinks.add(drink);
}

//Sorting
Collections.sort(drinks, new Comparator<SoftDrink>() {
        @Override
        public int compare(SoftDrink  drink1, SoftDrink  drink2) {
            return  drink1.drinkName.compareTo(drink2.drinkName);
        }
    });

【讨论】:

  • 它只比较drinkname
  • 不会为他做所有的工作;)
猜你喜欢
  • 2016-02-01
  • 2019-10-05
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 2021-03-24
  • 2013-02-08
相关资源
最近更新 更多