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方法
分享到:
相关推荐
Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(list.get(i)); } ``` 结果:23, 111, 112, 231, 456 * 混排(Shuffling) 使用shuffle方法可以打乱在一个List中的任何...
Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA)); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); } ``` 在上面的示例代码中,我们首先创建了一个ArrayList对象...
在Java编程语言中,`Collections` 类是 `java.util` 包中...在 `MySortList.java` 文件中,可能包含了关于 `Collections.sort()` 方法的具体使用示例,而 `Java.jpg` 可能是一个相关的类图或流程图,帮助理解这些概念。
Collections.sort(list, new Comparator() { @Override public int compare(String o1, String o2) { Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA); return com.compare(o1, o2); }...
Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...
import java.util.Collections; import java.util.Comparator; import java.util.Date; public class DateComparator implements Comparator<String> { private SimpleDateFormat formatter = new ...
对于数组和列表的排序、搜索等功能,Java标准库提供了`java.util.Arrays`和`java.util.Collections`两个工具类。 ##### `Arrays`中的方法 - `void sort(T[])`: 对数组中的元素按照升序进行排序。 - `List asList...
Collections.sort(list, new MyComparator()); ``` 此外,`Comparator`还可以通过lambda表达式简化代码,例如: ```java list.sort(Comparator.comparing(MyObject::getValue)); ``` `Comparator`还有其他高级...
Java中的`sort`排序算法是Java集合框架的重要组成部分,主要用于对List接口的实现类进行排序。这个算法在Java中主要体现在`java.util.Arrays`和`java.util.Collections`两个类中,提供了对数组和集合的排序功能。...
### Java软件开发实战:Java基础与案例开发详解 #### 11-6 Collections类 **Collections类** 是Java集合框架中的一个重要的工具类,主要用于提供各种实用方法来操作集合(尤其是`List`)。这些方法大多数是静态...
在处理大数据集时,Java还提供了`java.util.Collections.sort()`方法,它也可以用于排序List类型的容器。此外,对于更高效的排序算法,如快速排序、归并排序等,Java集合框架的`java.util.Arrays`和`java.util....
这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以根据元素的自然顺序或者自定义的比较器(Comparator)进行排序。 ### 1. 自然顺序排序 如果列表...
对于`List` 类型的集合,可以通过`Collections.sort(List l)` 方法进行排序。但是,如果集合中的元素是自定义对象,则需要实现`Comparable` 接口来指定排序规则。下面是一个简单的示例: ```java class Student ...
`java.util.Collections` 类则主要针对集合(如List、Set、Map等)提供了丰富的算法支持,具体包括: 1. **排序** `Collections.sort(List<T> list)` 用于对List进行排序,支持自然排序及通过比较器实现的定制...
当你需要对一个集合(如ArrayList或LinkedList)进行排序时,只需确保其中的元素类型实现了Comparable接口,然后调用Collections.sort()方法即可。 ```java List<String> list = new ArrayList(); list.add("apple...
在Java编程语言中,`Comparable`接口和`Comparator`接口是用来进行对象排序的关键工具,尤其在处理自定义对象集合时。下面将详细解释这两个接口及其核心方法`compareTo()`和`compare()`。 首先,`Comparable`接口是...
Collections.sort(list, comparator); } } ``` #### 五、总结 通过以上步骤,我们成功实现了一个通用的排序方法。该方法不仅支持任意类型的`List`,还能够根据传入的属性名自动识别需要排序的属性。这大大提高了...
Java 5.0中,`java.util.Arrays`类和`java.util.Collections`类都得到了升级,提供了更强大的排序功能。 一、Java 5.0中的`Arrays.sort()`方法 1. 对基本类型数组排序:在Java 5.0中,`Arrays.sort()`可以直接用于...