java 中sort 应用整理

来源:互联网 发布:企业版淘宝开店流程 编辑:程序博客网 时间:2024/06/05 05:18

 

java 中sort 应用整理
2009-12-18 11:12

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 来实现排序。下面以Arrays.sort为例,进行实现。

1.通过临时Comparator 实现排序

public class Node {
private String name;
public void setName(String name){
   this.name = name;
}

   public String getName(){
   return name;
}

}

public class SortTest {

public static void main(String[] args) {

   Node node1 = new Node();
   node1.setName("liuhongsen");
  
   Node node2 = new Node();
   node2.setName("longhaimei");
  
   Node node3 = new Node();
   node3.setName("liuhonglin");
  
   Node[] node = {node1,node2,node3};
  
   Arrays.sort(node, new Comparator(){

   public int compare(Object o1, Object o2) {
              return ((Node)o1).getName().compareTo(((Node)o2).getName());
   }

  
   });
   for(int i= 0; i < node.length; i++){
    System.out.println(node[i].getName());
   }
}
}

2.通过数组中对象实现Comparable接口实现排序

public class Node implements Comparable{
private String name;

public void setName(String name){
   this.name = name;
}

public void setType(String type){
   this.type = type;
}

public String getName(){
   return name;
}

public int compareTo(Object o) {
   return getName().compareTo(((Node)o).getName());
}


}

 

public class SortTest {


public static void main(String[] args) {

   Node node1 = new Node();
   node1.setName("liuhongsen");
  
   Node node2 = new Node();
   node2.setName("longhaimei");
  
   Node node3 = new Node();
   node3.setName("liuhonglin");
  
   Node[] node = {node1,node2,node3};
   Arrays.sort(node);
   for(int i= 0; i < node.length; i++){
    System.out.println(node[i].getName());
   }
}
}

3.TableView ,TreeView, ListView的排序

以TableView 为例。

TableViewer tableViewer = new TableViewer(detailGroup, SWT.BORDER | SWT.V_SCROLL
     | SWT.H_SCROLL | SWT.FULL_SELECTION);
   GridData gd = new GridData(GridData.FILL_BOTH);
   tableViewer.getControl().setLayoutData(gd);
   tableViewer.setContentProvider(new TableViewerContentProvider());
   tableViewer.setLabelProvider(new TableViewerLabelProvider());
   Table table = tableViewer.getTable();
   table.setHeaderVisible(true);
   table.setLinesVisible(true);
   tableViewer.setSorter(new FolderSorter());

public class FolderSorter extends ViewerSorter {
public int compare(Viewer viewer, Object o1, Object o2) {
   if (o1 instanceof INodeEntity && o2 instanceof INodeEntity){
    String labelName1 = ((INodeEntity)o1).getName();
    String labelName2 = ((INodeEntity)o2).getName();
    int res = labelName1.toLowerCase().compareTo(
      labelName2.toLowerCase());
    return res;
   }
   return 0;
}
}

 

原创粉丝点击