我需要按字母顺序对链表进行排序.我有一个链接列表,其中包含乘客姓名,并且需要按字母顺序对乘客姓名进行排序.怎么会这样做?有人有任何参考或视频吗?
mre*_*mre 30
您可以使用Collections#sort
按字母顺序对事物进行排序.
Fed*_*era 23
为了按字母顺序对字符串进行排序,您需要使用a Collator
,如:
LinkedList<String> list = new LinkedList<String>();
list.add("abc");
list.add("Bcd");
list.add("aAb");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Collator.getInstance().compare(o1, o2);
}
});
Run Code Online (Sandbox Code Playgroud)
因为如果你只是打电话,Collections.sort(list)
你将遇到包含大写字符的字符串的麻烦.
例如,在我粘贴的代码中,在排序后列表将是:[aAb, abc, Bcd]
但如果你只是打电话,Collections.sort(list);
你会得到:[Bcd, aAb, abc]
注意:使用a时,Collator
您可以指定语言环境,Collator.getInstance(Locale.ENGLISH)
这通常非常方便.
在java8中,您不再需要使用Collections.sort方法,因为LinkedList从java.util.List继承了方法排序,因此使Fido的答案适应Java8:
LinkedList<String>list = new LinkedList<String>();
list.add("abc");
list.add("Bcd");
list.add("aAb");
list.sort( new Comparator<String>(){
@Override
public int compare(String o1,String o2){
return Collator.getInstance().compare(o1,o2);
}
});
Run Code Online (Sandbox Code Playgroud)
参考文献:
http://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html
http://docs.oracle.com/javase/7/docs/api/java/util/List.html
LinkedList<String>list = new LinkedList<String>();
list.add("abc");
list.add("Bcd");
list.add("aAb");
list.sort(String::compareToIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 lambda 表达式:
list.sort((o1, o2) -> o1.compareToIgnoreCase(o2));
Run Code Online (Sandbox Code Playgroud)