您的位置:首页 > 编程语言 > Java开发

增强java基础 Java中对象之间比较大小

2016-10-23 17:03 399 查看
一杯清水因滴入一滴污水而变污浊,一杯污水却不会因一滴清水的存在而变清澈。

以前在上家公司的时候,需要做这么一个效果,就是将所有的人的名字按照自然顺序在手机上展示一个通讯录,有人就说了,这不是简单吗?你听我细说,当时公司返回来的是整个公司的员工的名字,然后最坑爹的是这些名字都是汉字,而不是拼音。。。。。。。。。。。。

好了,我们归入正题,在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