当使用集合(Collenctions)的时候 的时候,可以使用Comparable进行排序。这种方式在要排序方法比较复杂的时候使用,比如需要根据多个字段以及复杂的条件。
我们只需要将集合中的对象实现Comparable接口并覆盖compareTo方法即可。
下面是我刚写完的一个类及简单的使用掩饰,用的是List,其实用HashSet等也是可以的。
package com.hf.commonAMDQ.layout.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class LayoutGroup implements Comparable {
private int index=0;
public LayoutGroup(int index) {
this.index=index;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LayoutGroup a=new LayoutGroup(1);
LayoutGroup b=new LayoutGroup(3);
LayoutGroup c=new LayoutGroup(2);
List<LayoutGroup> list=new ArrayList<LayoutGroup>();
list.add(a);
list.add(b);
list.add(c);
for(int i=0;i<list.size();i++){
System.out.println(""+list.get(i).index);
}
Collections.sort(list);
for(int i=0;i<list.size();i++){
System.out.println(""+list.get(i).index);
}
}
public int compareTo(Object o) {
LayoutGroup other=(LayoutGroup)o;
/*根据index来进行排序*/
if(this.index>other.index){
return 1;
}
if(this.index<other.index){
return -1;
}
return 0;
}
public boolean equals(Object o){
if(this==o){
return true;
}
if(!(o instanceof LayoutGroup )){
return false;
}
LayoutGroup other=(LayoutGroup)o;
if(this.index>other.index){
return true;
}
return false;
}
public int hashCode(){
int result;
result=index;
return result*29;
}
}