如何按字母顺序对 LinkedList 进行排序?
How to sort a LinkedList alphabetically?
我环顾四周,但 none 我的研究回答了实际如何做或我的为什么不起作用。
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;
}
using System.Linq;
...
var sorted = from event in events orderby event.Name descending select event;
我假设您使用 Java。
我还假设 Event
是您自己的 class,它具有 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>
class。
你不能用 new Comparator<String>
排序,因为你排序的是 Event
,而不是 Strings
。另外 Collections.sort
方法没有 return 任何东西,所以我对 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 }
我环顾四周,但 none 我的研究回答了实际如何做或我的为什么不起作用。
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;
}
using System.Linq;
...
var sorted = from event in events orderby event.Name descending select event;
我假设您使用 Java。
我还假设 Event
是您自己的 class,它具有 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>
class。
你不能用 new Comparator<String>
排序,因为你排序的是 Event
,而不是 Strings
。另外 Collections.sort
方法没有 return 任何东西,所以我对 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 }