2013-12-12 3 views
1

Как я могу отсортировать список объектов массива String в алфавитном порядке.Сортировка списка объектов массива String

I Установите свой список следующим образом:

List CurrentRankingsList = rankings.getRankings(); 

У меня есть список строковые объекты, как это:

[["Dwayne","5"], ["Bill","4"], ["James","3"], ["Sally","3"]] 

Как я могу отсортировать этот список по именам в алфавитном порядке при сохранении списка структура, например [["Bill","4"], ["Dwayne","5"], ["James","3"], ["Sally","3"]] Я пробовал следующее, но список не сортируется правильно

 (Updated code from original question)  
      Collections.sort(CurrentRankingsList, new Comparator<Rankable>() 
      { 
      @Override 
      public int compare(Rankable o1, Rankable o2) { 
      // TODO Auto-generated method stub 
      String testo1=o1.getObject().toString(); 
      String testo2=o2.getObject().toString(); 
      int x = o1.getObject().toString().compareTo(o2.getObject().toString()); 
      return o1.getObject().toString().compareTo(o2.getObject().toString()); 
      } 
     }) ; 

На отладке сравнения мы получаем Пол (o1.GetObject.ToString) против Натана (o2.GetObject.ToString)

+0

Почему вы используете сырые типы? – user2336315

+0

[Коллекции # sort] (http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort (java.util.List)) также: [Generics] (http: //docs.oracle.com/javase/tutorial/java/generics/) – gla3dr

+0

http://stackoverflow.com/questions/4907683/sort-a-two-dimensional-array-based-on-one-column Вы получит эту идею отсюда – Aroon

ответ

2

Как я могу сортировать список массив строк объекты в алфавитном порядке.

  • список Declare или любой набор с типом: ArrayList<String[]>, List<String[]> иначе Коллекция будет рассматриваться в качестве сырьевого типа и мы будем сталкиваться во время выполнения служебной ошибки для типа опасностям.
  • Вам нужно будет пройти String[] как тип для Comparator

    Collections.sort(CurrentRankingsList, new Comparator<String[]>() 
    { 
        @Override 
        public int compare(String[] o1, String[] o2) { 
         // TODO Auto-generated method stub 
           return o1[0].compareTo(o2[0]); 
        } 
    }) ; 
    

    Предполагая, что CurrentRankingsList список строки массива.

  • Для такого случая более понятным было бы объявление класса, например, Player с двумя атрибутами (имя, ранг), а затем сортировка на основе экземпляра этого класса.

    class Player 
    { 
        String name; 
        int rank; 
    
        // your other code with constructor and getter, setter method  
        } 
    
    ArrayList<Player>currentRankingsList = new ArrayList<>(); 
    
    Collections.sort(CurrentRankingsList, new Comparator<Player>() 
    { 
        @Override 
        public int compare(Player o1, Player o2) { 
         // TODO Auto-generated method stub 
           return o1.getName().compareTo(o2.getName()); 
        } 
    }) ; 
    
+0

Я думаю, что CurrentRankingsList является либо списком List , либо List of String []. – user2336315

+0

Я думаю, что вы можете быть правы, но упоминание OP о том, как я могу сортировать этот список по именам, довольно запутанно :) – Sage

+0

Это не слишком сильно изменило ваш код ^^ 'public int compare (String [] o1, String [] o2) {return o1 [0] .compareTo (o2 [0]);} ' – user2336315

Смежные вопросы