增强java基础 Java中对象之间比较大小
2016-10-23 17:03
399 查看
一杯清水因滴入一滴污水而变污浊,一杯污水却不会因一滴清水的存在而变清澈。
以前在上家公司的时候,需要做这么一个效果,就是将所有的人的名字按照自然顺序在手机上展示一个通讯录,有人就说了,这不是简单吗?你听我细说,当时公司返回来的是整个公司的员工的名字,然后最坑爹的是这些名字都是汉字,而不是拼音。。。。。。。。。。。。
好了,我们归入正题,在java中,对象之间比较大小是根据一定的标准,当然这个标准由你来定,比如比较同学们的大小,那么就是比较他们的年龄了。其实很简单,那么我们应该怎么做呢??
对,就是实现java中的Comparable和Comparator这两个接口,自己自定义一个,大兄弟,你看到也许会感叹,好久没用过这两个类了。
如果实现Comparable,那么我们就要实现compareTo(T o)这个方法:我们来看下这个方法:
如果是实现Comparator这个接口,那我们就要实现compare()方法:我们看下compare()这个方法:
其实大同小异,我们接下来写代码举个例子,对了,就举上面的例子,将人姓名的自然顺序打出来,先创建一个Person类:
然后我们写到我们的主工程去实现一下看看效果
看下运行效果:
是不是感觉很简单,成热打铁,我们来实现另一种方式,这次我们用age来比较大小
看下结果:
是不是已经达到我们想要的效果了呢??
哈哈,就是这么简单,但是时间一长不用便就没那么容易了,本人是做android,如果你说你光做布局,不会用到,但是你想做更深层次的东西,java基础还是很重要的。
好了,这里我们这个知识点就到这里。源码不再黏贴地址了,很简单,加油!
以前在上家公司的时候,需要做这么一个效果,就是将所有的人的名字按照自然顺序在手机上展示一个通讯录,有人就说了,这不是简单吗?你听我细说,当时公司返回来的是整个公司的员工的名字,然后最坑爹的是这些名字都是汉字,而不是拼音。。。。。。。。。。。。
好了,我们归入正题,在java中,对象之间比较大小是根据一定的标准,当然这个标准由你来定,比如比较同学们的大小,那么就是比较他们的年龄了。其实很简单,那么我们应该怎么做呢??
对,就是实现java中的Comparable和Comparator这两个接口,自己自定义一个,大兄弟,你看到也许会感叹,好久没用过这两个类了。
如果实现Comparable,那么我们就要实现compareTo(T o)这个方法:我们来看下这个方法:
int compareTo(T o) 返回值为int 返回值大于0,表示大于 0,等于 返回值小于0,表示小于
如果是实现Comparator这个接口,那我们就要实现compare()方法:我们看下compare()这个方法:
int compare(T o1, T o2) 返回值为int 返回值大于0,表示大于 0,等于 返回值小于0,表示小于
其实大同小异,我们接下来写代码举个例子,对了,就举上面的例子,将人姓名的自然顺序打出来,先创建一个Person类:
public class Person implements Comparable<Person>{ private String name; private int age; private int apartMentId; public Person(String name, int age, int apartMentId) { this.name = name; this.age = age; this.apartMentId = apartMentId; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", apartMentId=" + apartMentId + '}'; } @Override public int compareTo(Person o) { return this.name.compareTo(o.name); }
然后我们写到我们的主工程去实现一下看看效果
public class Main { public static void main(String[] args){ List<Person> listPerson = new ArrayList<>(); Person person1 = new Person("zhangsan",18,200); Person person2 = new Person("lisi",20,200); Person person3 = new Person("wangwu",21,200); listPerson.add(person1); listPerson.add(person2); listPerson.add(person3); Collections.sort(listPerson); System.out.println(listPerson.toString()); } }
看下运行效果:
[Person{name='lisi', age=20, apartMentId=200}, Person{name='wangwu', age=21, apartMentId=200}, Person{name='zhangsan', age=18, apartMentId=200}]
是不是感觉很简单,成热打铁,我们来实现另一种方式,这次我们用age来比较大小
public class Main { public static void main(String[] args) { List<Person> listPerson = new ArrayList<>(); Person person1 = new Person("zhangsan", 18, 200); Person person2 = new Person("lisi", 20, 200); Person person3 = new Person("wangwu", 21, 200); listPerson.add(person1); listPerson.add(person2); listPerson.add(person3); Collections.sort(listPerson, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { if (o1.getAge() > o2.getAge()) { return 1; } else if (o1.getAge() < o2.getAge()) { return -1; } else if (o1.getAge() == o2.getAge()) { return 0; } return 0; } }); System.out.println(listPerson.toString()); }
看下结果:
[Person{name='zhangsan', age=18, apartMentId=200}, Person{name='lisi', age=20, apartMentId=200}, Person{name='wangwu', age=21, apartMentId=200}]
是不是已经达到我们想要的效果了呢??
哈哈,就是这么简单,但是时间一长不用便就没那么容易了,本人是做android,如果你说你光做布局,不会用到,但是你想做更深层次的东西,java基础还是很重要的。
好了,这里我们这个知识点就到这里。源码不再黏贴地址了,很简单,加油!
相关文章推荐
- java使用compareTo实现一个类的对象之间比较大小
- 【Java基础之集合(三)】集合对象比较大小和比较重复的区别和不同实现
- java基础之Integer和Long对象相等比较
- C#基础之数组排序,对象大小比较
- 字符串之间比较大小(可转化为对象)
- C#基础之数组 (排序,对象大小比较)
- 比较java c++ 对象之间的区别(内存)
- Java 对象之间的比较,判断两个对象的某一个属性相等,则对象相等
- Java比较两个数字或者三个数字之间的大小
- java 基础一 对象和数组的比较
- Integer 类型对象之间大小比较
- java--封装一类Java对象,用户从输入对话框输入两个日期,程序将判断两个日期的大小关系(比如输出:您输入的第二个日期大于第一个日期)以及两个日期之间的间隔天数(比如输出:2006年6月6日和
- java基础----面向对象2(也是比较重要的零散知识点)
- Java基础学习19(String类型对象在内存中的分布以及与包装类之间的转换)
- Java_语法基础_谨慎包装类型的大小比较
- Java对象之间的比较之equals和==
- C#基础之数组排序,对象大小比较
- C#基础之数组排序,对象大小比较
- java 比较两个日期之间的大小
- java基础学习-java常用对象的内存占用大小