java中Comparable接口

普通的compareTo方法,是String类中用于字符串比较的方法,用于比较普通的ascill值,

若要用来比较数值型的,则必须调用String类中的静态方法valueOf(),具体看看代码怎么实现:

package excise;

public class Demo11_B23 {
	public static void main(String args[]){
		String name1="zhoumeixu";
		String name2="gaoyang";
		int age1=24;
		int age2=30;
		System.out.println("名字比较的结果是:"+name1.compareTo(name2));
		System.out.println("年龄比较的结果是:"+String.valueOf(24).compareTo(String.valueOf(30)));
	}

}


排序算法至少有六七种,什么冒泡排序,快速排序,一大堆的东西,在java中要实现对一个ArrayList的快速

排序,实际可以调用Collections中的sort方法的,上代码看看吧:

package excise;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import  java.util.Collections;
public class Demo11_B23 {
	public static void main(String args[]){
		List<Integer> lst=new ArrayList<Integer>();
		Random t=new Random();
		for(int j=0;j<10;j++){
			int temp=t.nextInt(1000);
			lst.add(temp);
		}
		lst.addAll(Arrays.asList(12,2323,212,89,20,12,3123,123));
		System.out.println(lst);
		Collections.sort(lst);
		for(int j=lst.size()-1;j>lst.size()-6;j--){
			System.out.print(lst.get(j)+"..");
		}
		System.out.print("\n");
		int a=lst.remove(lst.size()-1);
		lst.set(0, 99999);
		System.out.println(lst);
		System.out.println(a);
	}

}

如果ArrayList对象是普通的类,调用Collections类中的sort方法会报错,这时候要覆写CompareTo接口中的compareto方法

具体看看怎么实现吧:

package excise;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CompareDemo implements Comparable<CompareDemo >{
	private String name;
	private  int age;
	public CompareDemo(){
		
	}
	public CompareDemo(String name,int age){
		this.name=name;
		this.age=age;
	}
	public  void setage(int age){
		this.age=age;
	}
	public void setname(String name){
		this.name=name;
	}
	public String getname(){
		return name;
	}
	public int getage(){
		return age;
	}
	public int compareTo(CompareDemo o){
		if(this.age>o.getage()){
			return (this.age-o.getage());
		}
		if(this.age<o.getage()){
			return (this.age-o.getage());
		}
	
		if(this.name.compareTo(o.getname())>0){
			return 1;
		}
		if(this.name.compareTo(o.getname())<0){
			return -1;
		}
		return 0;
	}	
	
	public static void main(String args[]) {
		CompareDemo f1=new CompareDemo("zhou",12);
		CompareDemo f2=new CompareDemo("wang",10);
		CompareDemo f3=new CompareDemo("chen",122);
		CompareDemo f4=new CompareDemo("zhao",14);
		CompareDemo f5=new CompareDemo("erbi",30);
		
		List<CompareDemo> list=new ArrayList<CompareDemo>();
		list.add(f1);
		list.add(f2);
		list.add(f3);
		list.add(f4);
		list.add(f5);
		Collections.sort(list);
		for(CompareDemo o:list){
			System.out.println(o.getname()+"------->"+o.getage());
		}
	}

	

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值