java中Comparable接口
2015-10-29 08:42
211 查看
普通的compareTo方法,是String类中用于字符串比较的方法,用于比较普通的ascill值,
若要用来比较数值型的,则必须调用String类中的静态方法valueOf(),具体看看代码怎么实现:
排序算法至少有六七种,什么冒泡排序,快速排序,一大堆的东西,在java中要实现对一个ArrayList的快速
排序,实际可以调用Collections中的sort方法的,上代码看看吧:
如果ArrayList对象是普通的类,调用Collections类中的sort方法会报错,这时候要覆写CompareTo接口中的compareto方法
具体看看怎么实现吧:
若要用来比较数值型的,则必须调用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()); } } }
相关文章推荐
- 开源 java CMS - FreeCMS商业版isnew,newdays的使用方法
- java 不可变类 缓存实例
- java 实现WebService 以及不同的调用方式
- Java 复制文件的高效方法
- spring的IOC与AOP读源码小记
- 关于为什么java中public修饰的类的类名和文件名要一致的个人看法
- java_class.getMethod 与 class.getDeclaredMethod的区别
- spring 与设计模式(创建型)之单例Singleton
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- 【Java】获取泛型的类型
- Java NIO入门
- Java记录 -49- LinkedList源码剖析
- spring远程服务知识梳理
- struts2和jsp的数据传值
- 关于Java中几种方法块的执行过程分析
- MyEclipse(Eclipse)安装后需要进行的配置
- JDK动态代理和Cglib的动态代理
- spring+jersey+c3p0构建restful webservice(数据源采用c3p0)
- Spring和SpringMVC的关系
- maven添加 xfire-all-1.2.6.jar 导致的spring配置文件异常