2014-09-13 69 views
0

我有以下集合在我的驱动程序类:如何通过Java中的各种参数对此ArrayList进行排序?

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

什么是最Javaish这样我可以去根据ArrayList中这些对象进行比较,然后对它们进行排序approriately这些各种参数?

+0

写一个比较器和做 – SparkOn 2014-09-13 15:12:21

+0

随着Java8这篇文章可能会有所帮助:http://blog.jooq.org/2014/01/31/java- 8-friday-goodies-lambdas-and-sorting /编写一个易于维护的解决方案。 – 2014-09-13 15:14:25

回答

3

也许你可以尝试这样的事:

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); 
     } 
    }); 
+1

它只比较drinkname – gefei 2014-09-13 15:19:32

+0

不会为他做所有的工作;) – erad 2014-09-13 15:20:20

相关问题