Java两种排序方式快慢比较

Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类,

一个是运行程序的Main类,另一个是Bean类,其中Bean类实现了Comparable接口的compareTo方法:

public class Bean implements Comparable<Bean>{
	private String name;
	private int age;
	private String address;
	
	
	
	public String getName() {
		return name;
	}



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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	//比较名字,注意这里比较的英文名字,并且是从首字母开始依次比较,升序排列,即大数在后
	public int compareTo(Bean arg0) {
		// TODO Auto-generated method stub
		int size = this.name.compareTo(arg0.getName());
//		this.age.compareTo(arg0.getAge());
		if(size>0)
		{
			return 1;
		}
		else if(size<0)
		{
			return -1;
		}
		return 0;
	}

}

        
/*Main类:
 * 排序速度测试
 * */
public class SpeedTest {
	
	public static void main(String[] args) {
		long start = System.nanoTime();
		List <Bean> list1 = new ArrayList<Bean>();
		List <Bean> list2 = new ArrayList<Bean>();
		Bean bean1 = new Bean();
		bean1.setName("a");
		Bean bean2 = new Bean();
		bean2.setName("b");
		Bean bean3 = new Bean();
		bean3.setName("c");
		list1.add(bean1);
		list1.add(bean2);
		list1.add(bean3);
		Collections.sort(list1);
		for (int i = 0; i < list1.size(); i++) {
			System.out.println(list1.get(i).getName());
		}
		long end = System.nanoTime();
		System.out.println((end-start)+"");
		
	}
}

  • 此项排序用时935687纳秒

第二种排序,一个单独的类实现Comparator<Bean>接口,去掉Bean中实现Comparable的操作。

public class BeanComparator implements Comparator<Bean>{

	public int compare(Bean arg0, Bean arg1) {
		// TODO Auto-generated method stub
		int size = arg0.getName().compareTo(arg1.getName());
		if(size>0)
		{
			return 1;
		}
		else if(size<0)
		{
			return -1;
		}
		return 0;
	}

	

}
  • 第二种排序方式用时1244875纳秒

两项比较,明显由Bean实现Comparable接口的排序速度较快,个人猜测,毕竟是需要单独实例一个Comparator类,这个过程效率可能有损耗

转载于:https://my.oschina.net/lengwei/blog/495929

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值