利用Comparable进行排序
2007-08-30 15:23
281 查看
当使用集合(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;
}
}
我们只需要将集合中的对象实现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;
}
}
相关文章推荐
- JAVA 利用Arraylist.sort()进行排序的实现。(comparable接口的实现)
- Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- 容易遗忘的Comparable:一个结果集List,里面有很多的对象,要求根据对象的指定(age)字段进行排序
- MFC---利用标题对列表进行排序
- 利用J2ME里的RMS对记录进行排序
- 利用J2ME里的RMS对记录进行排序
- 利用sort对数组进行自定义排序
- 利用Collator和Collections.sort对list进行中文排序,注意与Arrays.sort的区别
- lucene利用sort对查询结果进行排序示例
- 利用函数指针对数组进行排序(选择排序实现)
- java List利用Comparator进行排序
- 【LeetCode】two num 利用comparable接口 对对象进行排序
- 利用树型结构进行排序
- 使用Comparable和Comparator对Java集合对象进行排序
- 利用TreeSet进行排序操作
- js利用appendChild对<li>标签进行排序的实现方法
- C++利用指针数组和快排对输入的字符串进行排序
- mapreduce 利用InverseMapper.class对key,value进行 交换实现词频排序
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- javascript利用内置sort函数进行排序