当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .