2013-07-20 82 views
0

關於如何應用Collections.sort方法根據itemData ArrayList中每個grocItem對象的優先級對我的arraylist進行排序的任何想法?通過對象變量對Arraylist進行排序

public class GroceryProgram { 

    private final static int GROC_SIZE = 6; 
    private final List<ItemData> itemData = new ArrayList<ItemData>(); 

    private void setUpList() { 

     Scanner keyboard = new Scanner(System.in); 

     for (int i = 0; i < GROC_SIZE; i++) { 

      System.out.print("\nEnter item name (" + i + ") : ");    
      String name = keyboard.next(); 

      System.out.print("\nEnter the price of item (" + i + ") : "); 
      double cost = keyboard.nextDouble(); 

      System.out.print("\nEnter Priority Number (" + i + ") : "); 
      int priority = keyboard.nextInt(); 

      ItemData grocItem = new ItemData(name, cost, priority); 
      itemData.add(grocItem); // add grocery items to itemData ArrayList 

      Collections.sort(grocItem); 
      for (Int priority : priority) { 
       System.out.println(integer); 

回答

0

您可以使用Collections.sort(List list, Comparator c)來解決這個問題嗎?您可以簡單地執行以下操作:

Collections.sort(itemData, new Comparator() { 
    public int compare(Object o1, Object o2) { 
    // Return a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. 
    } 
} 
2

使用比較器調用sort()。例如,按優先級升序排列的比較器可能如下所示。

Collections.sort(items, new Comparator<ItemData>() { 
    public int compare (ItemData o1, ItemData o2) { 
     int comp = o1.getPriority() - o2.getPriority(); 
     return comp; 
    } 
}); 

PS:'itemData'是錯誤的變量命名 - 它會引用單個項目,而不是列表。 'groceryItems','stockItems'或'itemList'會更好。

變量名稱應該使您能夠以有意義的,清晰的,簡明的英語說出您的軟件。

希望這會有所幫助。

0

您可以使用自定義的比較如下:

Collections.sort(itemData ,new PriorityComparator()); 

     //print sorted arraylist,it will print the data in ascending order (low priority->high priority).feel free to modify if you want to go for descending order 
     System.out.println(itemData); 

PriorityComparator類定義:

private static class PriorityComparator implements Comparator{ 

    @Override 
    public int compare(ItemData object1, ItemData object2) { 
     return (object1.priority< object2.priority) ? -1: (object1.priority> object2.priority) ? 1:0 ; 
    } 

} 

參考:

how-to-sort-arraylist-in-java-example

我希望這會有所幫助!

相關問題