第一种是list中的对象实现Comparable接口,如下
public class User implements Comparable<User>{
private String name
private Integer order
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
public Integer getOrder() {
return order
}
public void setOrder(Integer order) {
this.order = order
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder())
}
}
此时可以直接排序
public static void main(String[] args) {
User user1 = new User()
user1.setName("a")
user1.setOrder(1)
User user2 = new User()
user2.setName("b")
user2.setOrder(2)
List<User>list = new ArrayList<User>()
//此处add user2再add user1
list.add(user2)
list.add(user1)
Collections.sort(list)
for(User u : list){
System.out.println(u.getName())
}
}
第二种方法是根据Collections.sort重载方法来实现,例如:
public static void main(String[] args) {
User user1 = new User()
user1.setName("a")
user1.setOrder(1)
User user2 = new User()
user2.setName("b")
user2.setOrder(2)
List<User>list = new ArrayList<User>()
list.add(user2)
list.add(user1)
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder())
}
})
for(User u : list){
System.out.println(u.getName())
}
}
java数组sort()方法降序方式:
用Arrays类sort()对数组元素进行降序排列
import java.util.Arrays
class SortDemo
{
public static void main(String[] args)
{
int[] vec={0,15,-14,45,20,70}
Arrays.sort(vec)
System.out.println("/n")
System.out.println("降序排列:")
for (int i=vec.length-1i>=0 i-- )
{
System.out.print(vec[i]+" ")
}
}
}
1.java.util.Collections.sort(List list)与Comparable,Comparator 接口2.java.util.Arrays.sort(T[])与Comparable,Comparator 接口
3.JFace中 TableView ,TreeView, ListView的排序,实现ViewerSorter
两者的实现类似,不同的是针对的对象不一样。Collections.sort()针对的是List,Arrays.sort()针对的是数组。如果List中或者数组中存的都是基本数据类型(byte、short、int、long、float、double、char、boolean) 和 String,那么我们直接使用即可。如果其中存的数据是对象,那么有两种方法,一是每个对象实现Comparable接口,二是使用Collections.sort(List list,Comparator c)或者Arrays.sort(T[],Comparator c),临时实现一个Comparator 来实现排序。
最后是一个以TableView 为例。
TableViewer tableViewer = new TableViewer(detailGroup, SWT.BORDER | SWT.V_SCROLL
| SWT.H_SCROLL | SWT.FULL_SELECTION)
tableViewer.setSorter(new FolderSorter())
public class FolderSorter extends ViewerSorter {
。。。。。。
}