通用比较器

package a1;

public class Book
{
 private int id;
private String name;
public int getId()
{
	return id;
}
@Override
public String toString()
{
		// TODO Auto-generated method stub
		return "编号:"+id+"名字:"+name;
}
public void setId(int id)
{
	this.id = id;
}
public Book(int id, String name)
{
	super();
	this.id = id;
	this.name = name;
}
public String getName()
{
	return name;
}
public void setName(String name)
{
	this.name = name;
}
	

}

 

package a1;

import java.util.Arrays;

public class ComparatorTest
{
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
	   Book b1=new Book(8,"java");
	   Book b2=new Book(3,"C语言");
	   Friut f1=new Friut(6,"apple");
	   Object [] oo={b1,b2,f1};
	   Arrays.sort(oo, new MyComparator());
	   System.out.println(Arrays.toString(oo));
	}

}

 

package a1;

public class Friut
{
 private int id;
  private String name;
public int getId()
{
	return id;
}
@Override
public String toString()
{
	// TODO Auto-generated method stub
	return "编号:"+id+"名称:"+name;
}
public void setId(int id)
{
	this.id = id;
}
public Friut(int id, String name)
{
	super();
	this.id = id;
	this.name = name;
}
public String getName()
{
	return name;
}
public void setName(String name)
{
	this.name = name;
}
}

 

package a1;

import java.lang.reflect.Method;
import java.util.Comparator;

/**
 * 
 * @author zyf
 *@see 通用比较器 要求:必须有相同的字段
 */
public class MyComparator implements Comparator
{
   
	@Override

	public int compare(Object o1, Object o2)
	{
		//获取类的自描述对象
        Class c1=o1.getClass();
        Class c2=o2.getClass();
        //Field f1,f2;
        Method m1,m2;
        Integer id1=null,id2=null;
        try
		{
        //获取字段的自描述对象
		 //f1=c1.getDeclaredField("id");
		 //f2=c2.getDeclaredField("id");
		 //id1=f1.getInt(o1);
		 //id2=f2.getInt(o2);
		 //返回get方法的描述对象
		 m1=c1.getDeclaredMethod("getId");
		 m2=c2.getDeclaredMethod("getId");
		 id1=(Integer) m1.invoke(o1);
		 id2=(Integer) m2.invoke(o2);
		 //从对象中得到字段值
		 
		} catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
		return id1.compareTo(id2);
	}

	
   

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值