2013-07-20 3 views
0

ItemsData ArrayList 내의 각 grocItem 개체의 우선 순위별로 내 arraylist를 정렬하는 Collections.sort 메서드를 적용하는 방법에 대한 아이디어가 있습니까?개체 변수로 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()으로 전화하십시오. 예를 들어, 우선 순위가 오름차순 인 Comparator는 다음과 같을 수 있습니다.

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

추신 : '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

나는 그것이 도움이 될 것입니다 희망!