2015-06-27 3 views
0

У меня есть стол с четырьмя столбцами, и я хочу сортировать каждый столбец по рангу. Я создаю класс, как показано ниже:Как отсортировать каждый столбец по другому заказу?

public static class Fruit { 
String name; 
int price; 
int number; 
String location; 

public Fruit(String a, int b, int c, String d) { 
    name = a; 
    price = b; 
    number = c; 
    location = d; 
}} 

И я хочу, чтобы отсортировать каждый столбец по рангу, а это значит, что я могу в первую очередь сортировать по имени, то сортировать по цене в ряду с тем же именем. Кроме того, я хочу сортировать каждый столбец не только от малого до большого, но и сортировать по обратному порядку.

Я использую Collection.sort(a, new Comparator()) и Collections.sort(a, Collections.reverseOrder(new Comparator())) и я использую a.name.compareTo(b.name) в классе Comparator(), однако, с помощью Collection.sort(), он может только сортировать все столбцы по тому же порядку, что означает, что я не могу сортировать первый столбец от мала до велика, то сортировать второй столбец от большого до малого.

Может ли кто-нибудь помочь мне, пожалуйста?

ответ

0

Если Вы хотите отсортировать список заказа фруктов по названию по возрастанию и убыванию цены:

List<Fruit> list = new ArrayList<>(); 
    // add fruits to list 
    Collections.sort(list, new Comparator<Fruit>() { 
     @Override 
     public int compare(Fruit o1, Fruit o2) { 
      int r = o1.name.compareTo(o2.name); 
      if (r != 0) return r; 
      return o2.price - o1.price; 
     } 
    }); 
+0

Спасибо за ваше любезное помощь =) – Pelican