2014-09-13 65 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

相關問題