`
kakaluyi
  • 浏览: 444973 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java.util.Collections.sort(List list)与Comparable,

阅读更多

java.util.Collections.sort(List list)与Comparable,Comparator 接口



调用java.util.Collections.sort(List list)方法来进行排序的时候,

List内的Object都必须实现了Comparable接口。

否则出现下面的错误:

java.lang.ClassCastException

at java.util.Arrays.mergeSort(Arrays.java:1152)

at java.util.Arrays.sort(Arrays.java:1079)

at java.util.Collections.sort(Collections.java:113)




或者调用

java.util.Collections.sort(List list,Comparator c),

可以临时声明一个Comparator 来实现排序。



Comparable接口的 public int compareTo(Object arg0) {]

返回值大于0,则this被排在后面。arg0放在前面。

可以参看Integer 的compareTo()方法:



  public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
  }

返回值>=0,则不调用Arrays.swap(Object x[], int a, int b) 方法。


copyright © lizongbo

通过java.util.Collections.sort(List list,Comparator c)里临时声明的Comparator

可以方便的实现顺序或者倒序排列。
copyright © lizongbo

示例如下:
copyright © lizongbo

Collections.sort(imageList, new Comparator() {
  public int compare(Object a, Object b) {
    int orderA = Integer.parseInt( ( (Image) a).getSequence());
    int orderB = Integer.parseInt( ( (Image) b).getSequence());
    return orderA - orderB;
  }
});

如果需要改变排列顺序
copyright © lizongbo

改成return orderb - orderA 即可。


具体可以参考学习例子有:
copyright © lizongbo

http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting

http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/TableSorter.java

http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/TableSorterDemo.java



这是一个实现了点击表格标题栏来实现表格数据排序的例子。


copyright © lizongbo

ps: Collection(包括ArrayList等)的remove(Object o)方法

(src:java.util.AbstractCollection.java)

if (o.equals(e.next())) {
    e.remove();

使用的equals来判断的,而如果没有重写equals方法的话,

实际调用Object的

public boolean equals(Object obj) {
return (this == obj);
  }

因此,放进在集合里的元素,建议都重新实现自己的 equals方法

分享到:
评论

相关推荐

    Java.util.Collection类的学习.pdf

    Collections.sort(list); for (int i = 0; i &lt; array.length; i++) { System.out.println(list.get(i)); } ``` 结果:23, 111, 112, 231, 456 * 混排(Shuffling) 使用shuffle方法可以打乱在一个List中的任何...

    Java Collections.sort()实现List排序的默认方法和自定义方法

    Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA)); for (int i = 0; i &lt; list.size(); i++) { System.out.print(list.get(i)); } ``` 在上面的示例代码中,我们首先创建了一个ArrayList对象...

    java 使用Collections类对List的排序操作

    在Java编程语言中,`Collections` 类是 `java.util` 包中...在 `MySortList.java` 文件中,可能包含了关于 `Collections.sort()` 方法的具体使用示例,而 `Java.jpg` 可能是一个相关的类图或流程图,帮助理解这些概念。

    java集合某个字段按照中文拼音排序.docx

    Collections.sort(list, new Comparator() { @Override public int compare(String o1, String o2) { Comparator&lt;Object&gt; com = Collator.getInstance(java.util.Locale.CHINA); return com.compare(o1, o2); }...

    java中Collections.sort排序详解

    Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...

    Android里List时间升序排序

    import java.util.Collections; import java.util.Comparator; import java.util.Date; public class DateComparator implements Comparator&lt;String&gt; { private SimpleDateFormat formatter = new ...

    java常用工具类的使用

    对于数组和列表的排序、搜索等功能,Java标准库提供了`java.util.Arrays`和`java.util.Collections`两个工具类。 ##### `Arrays`中的方法 - `void sort(T[])`: 对数组中的元素按照升序进行排序。 - `List asList...

    java排序Comparator和Comparable

    Collections.sort(list, new MyComparator()); ``` 此外,`Comparator`还可以通过lambda表达式简化代码,例如: ```java list.sort(Comparator.comparing(MyObject::getValue)); ``` `Comparator`还有其他高级...

    java sort排序算法实例完整代码

    Java中的`sort`排序算法是Java集合框架的重要组成部分,主要用于对List接口的实现类进行排序。这个算法在Java中主要体现在`java.util.Arrays`和`java.util.Collections`两个类中,提供了对数组和集合的排序功能。...

    Java软件开发实战 Java基础与案例开发详解 11-6 Collections类 共6页.pdf

    ### Java软件开发实战:Java基础与案例开发详解 #### 11-6 Collections类 **Collections类** 是Java集合框架中的一个重要的工具类,主要用于提供各种实用方法来操作集合(尤其是`List`)。这些方法大多数是静态...

    ArraySort排序

    在处理大数据集时,Java还提供了`java.util.Collections.sort()`方法,它也可以用于排序List类型的容器。此外,对于更高效的排序算法,如快速排序、归并排序等,Java集合框架的`java.util.Arrays`和`java.util....

    java中Collections.sort排序函数用法详解

    这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以根据元素的自然顺序或者自定义的比较器(Comparator)进行排序。 ### 1. 自然顺序排序 如果列表...

    java集合知识大全

    对于`List` 类型的集合,可以通过`Collections.sort(List l)` 方法进行排序。但是,如果集合中的元素是自定义对象,则需要实现`Comparable` 接口来指定排序规则。下面是一个简单的示例: ```java class Student ...

    Collections Framework中的算法(之一)――综述

    `java.util.Collections` 类则主要针对集合(如List、Set、Map等)提供了丰富的算法支持,具体包括: 1. **排序** `Collections.sort(List&lt;T&gt; list)` 用于对List进行排序,支持自然排序及通过比较器实现的定制...

    java中Comparable和Comparator的区别

    当你需要对一个集合(如ArrayList或LinkedList)进行排序时,只需确保其中的元素类型实现了Comparable接口,然后调用Collections.sort()方法即可。 ```java List&lt;String&gt; list = new ArrayList(); list.add("apple...

    Comparable.pdf

    在Java编程语言中,`Comparable`接口和`Comparator`接口是用来进行对象排序的关键工具,尤其在处理自定义对象集合时。下面将详细解释这两个接口及其核心方法`compareTo()`和`compare()`。 首先,`Comparable`接口是...

    List对象排序通用方法

    Collections.sort(list, comparator); } } ``` #### 五、总结 通过以上步骤,我们成功实现了一个通用的排序方法。该方法不仅支持任意类型的`List`,还能够根据传入的属性名自动识别需要排序的属性。这大大提高了...

    Java5.0数组排序

    Java 5.0中,`java.util.Arrays`类和`java.util.Collections`类都得到了升级,提供了更强大的排序功能。 一、Java 5.0中的`Arrays.sort()`方法 1. 对基本类型数组排序:在Java 5.0中,`Arrays.sort()`可以直接用于...

Global site tag (gtag.js) - Google Analytics