2015-08-19 3 views
0

Я огляделся, но ни одно из моих исследований не отвечает, как на самом деле это делать, или почему мое не работает.Как отсортировать LinkedList по алфавиту?

private LinkedList<Event> events = new LinkedList<Event>(); 
private LinkedList<Event> tempEvents = new LinkedList<Event>(); 

public Events() 
{ 
    setup(); 
} 

private void setup() 
{ 
    events.add(new Event("Breakfast", 10)); 
    events.add(new Event("Lunch", 15)); 
    events.add(new Event("Nibbles", 20)); 
    events.add(new Event("Tea", 25)); 
    events.add(new Event("Dinner", 30)); 
    events.add(new Event("Snack", 35)); 
    events.add(new Event("Afters", 40)); 
} 

public Event fromAlpha() 
{ 
    tempEvents.clear(); 
    tempEvents = Collections.sort(events, new Comparator<String>()); 
    return null; 
} 
+0

Вы должны обеспечить '' компаратор для сортировки '' List . – Thilo

+0

это C# или Java ?? –

ответ

0

Я предполагаю, что вы используете Java.

Также я предполагаю, что Event ваш собственный класс, который имеет getName и getNum методы, как этот

class Event { 

    private final String name; 
    private final int num; 

    public Event(String name, int num) { 
     this.name = name; 
     this.num = num; 
    } 

    public String getName() { 
     return name; 
    } 

    public int getNum() { 
     return num; 
    } 

} 

Таким образом, вы можете отсортировать List с анонимным Comparator<Event> класса. Вы не можете сортировать его с помощью new Comparator<String>, потому что вы сортируете Event s, а не Strings s. Также Collections.sort метод ничего не возвращает, поэтому я отсортировал коллекцию events. Так вот рабочий пример:

class Events { 

    private LinkedList<Event> events = new LinkedList<Event>(); 
    private LinkedList<Event> tempEvents = new LinkedList<Event>(); 

    public Events() { 
     setup(); 
    } 

    private void setup() { 
     events.add(new Event("Breakfast", 10)); 
     events.add(new Event("Lunch", 15)); 
     events.add(new Event("Nibbles", 20)); 
     events.add(new Event("Tea", 25)); 
     events.add(new Event("Dinner", 30)); 
     events.add(new Event("Snack", 35)); 
     events.add(new Event("Afters", 40)); 
    } 

    public void fromAlpha() { 
     for(Event e : events) { 
      System.out.print("{ " + e.getName() + ", " + e.getNum() + " }"); 
     } 
     System.out.println(); 
     Collections.sort(events, new Comparator<Event>() { 
      public int compare(Event e1, Event e2) { 
       return e1.getName().compareTo(e2.getName()); 
      } 
     }); 
     for(Event e : events) { 
      System.out.print("{ " + e.getName() + ", " + e.getNum() + " }"); 
     } 
     System.out.println(); 
    } 
} 

Вот результат:

{ Breakfast, 10 }{ Lunch, 15 }{ Nibbles, 20 }{ Tea, 25 }{ Dinner, 30 }{ Snack, 35 }{ Afters, 40 } 
{ Afters, 40 }{ Breakfast, 10 }{ Dinner, 30 }{ Lunch, 15 }{ Nibbles, 20 }{ Snack, 35 }{ Tea, 25 } 
+0

спасибо За помощь ребята –

-1
using System.Linq; 
... 
var sorted = from event in events orderby event.Name descending select event; 
Смежные вопросы