Java编程本领:列表排序[Java编程]
本文“Java编程本领:列表排序[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList.这些调集供应了对对象组的索引拜候.他们供应了元素的增添与删除支持.但是,它们并没有内置的元素排序支持.
你可以利用java.util.Collections类中的sort()办法对List元素举行排序.你既可以给办法传送一个List对象,也可以传送一个List和一个Comparator.假如列表中的元素全都是相同范例的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort().假如这个类没有实现Comparator,你也可以传送一个Comparator到办法sort()中,举行排序.假如你不想利用缺省的分类次序举行排序,你一样可以传送一个Comparator到办法sort()中来举行排序.假如列表中的元素并不都是相同范例的类,你在举行排序的时刻就不是这样幸运了.除非你编写一个专用的跨类的Comparator.
排序的次序怎么样呢?假如元素是String对象,却省的排序次序是按照字符编码举行的,基本上是每个字符的ASCII/Unicode值.假如严峻的限制在处理英文,却省的排序次序普通是充足的,因为它首先排A-Z,然后是小写字母a-z.但是假如你处理非英文字,大概你只是想利用差别的排序次序,这样Collections.sort()就呈现了第二种改变.比方,你想利用字符串的反序举行排序.为了实现这个功效,你可以在Collections类中通过reverseOrder()来获得一个反序Comparator.然后,你将反序Comparator传送给sort()办法.换句话说,你作以下工作:
List list = ...;
Comparator comp = Collections.reverseOrder();
Collections.sort(list, comp);
假如列表包含项目:Man, man, Woman, 和woman,排序好的列表将是Man, Woman, man, woman.这里没有什么复杂的.需求注意的非常重要的一点是Collections.sort()是举行原位排序.假如你需求保存原序,需求先对原调集举行复制,在排序,就像这样:
List list = ...;
List copyOfList = new ArrayList(list);
Collections.sort(copyOfList);
这里,排好序的列表是:Man, Woman, man, woman,但是原始列表(Man, man, Woman, woman)被保存了.
到目前为止,排序是辨别大小写的.你若何举行不去分大小写的排序呢?一种实现方法是象这样实现Comparator:
public static class CaseInsensitiveComparator
implements Comparator {
public int compare(Object element1,
Object element2) {
String lower1 =
element1.toString().toLowerCase();
String lower2 =
element2.toString().toLowerCase();
return lower1.compareTo(lower2);
}
}
你确切不需求手工的成立这个类.而是,你可以是用以存在的Comparator,CASE_INSENSIVTIVE_ORDER,它是在String类中定义的.
这种实现方法有一点小小的问题.Sort()算法供应安定的排序,并保持与原有序列相同的元素.这意味着一个包含两个元素”woman”和”Woman”的列表将有差别的排序,而这种差别是按照两个元素在列表中呈现的先后次序决意的.
语言的差别又会怎么样呢?java.text包供应了Collector和CollectionKey类来举行辨别语言的排序.这里是例子:
注意,假如你的文本是本地语言,而不是缺省语言,你需求传送一个本地语种给getInstance()办法,就象:
public static class CollatorComparator
implements Comparator {
Collator collator = Collator.getInstance();
public int compare(Object element1,
Object element2) {
CollationKey key1 = collator.getCollationKey(
element1.toString());
CollationKey key2 = collator.getCollationKey(
element2.toString());
return key1.compareTo(key2);
}
}
以上是“Java编程本领:列表排序[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |