关于 Comparable 的使用
Posted crush123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 Comparable 的使用相关的知识,希望对你有一定的参考价值。
作为一名刚上路的超初级程序员,今天终于可以迈开自己的第一步,写一篇博客。把我自己都感动哭了。
今天看面试题时看到了一个Comparable 的使用,才发现自己好像并没有使用过这个接口,具体这个接口是怎么用的,我在看了几篇comparable的博客以后觉得应该把这个东西记录下来,也希望自己能够得到成长。
首先我们举一个排列int数组的例子,假如一个数组中有这么几个元素,希望将他进行从小到大排序,不使用冒泡排序等算法,直接使用java中Arrays类的方法进行使用,这个方法就可以直接对数组中的元素进行排序,十分方便。
int[] array = 9,5,7,5,31,7; Arrays.sort(array); for (int i = 0; i < array.length; i++) System.out.println(array[i]); 结果:5 5 7 7 9 31
如果说,现在有一个要求,有一个实体类User,User类中有三个属性,id,name,price
class User private int id; private String name; private int price;
需要你按照价格升序进行排序(就如上的int数组排序一样)。那么我们做这个的时候,还是可以使用sort()方法,不同的是,之前使用的是int类型的数组,这次需要变更成为,User类型的数组按价格进行排序,这时候就需要让User去实现comparable接口,重写其中的方法,compareTo方法的返回值只有 -1, 0, 1
class User implements Comparable<User> private int id; private String name; private int price; public User(int id, String name, int price) this.id = id; this.name = name; this.price = price; @Override public String toString() return "User" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ", price=" + price + ‘‘; @Override public int compareTo(User o) if(this.price>o.price) return 1; else if(this.price<o.price) return -1; else return 0;
最后 new 几个对象,放入User类型的数组中进行比较,使用sort()进行排序就可以了
User[] users = new User[3]; users[0] = new User(1,"寿司",29); users[1] = new User(2,"蛋挞",21); users[2] = new User(3,"牛排",25); Arrays.sort(users); for (int i = 0; i < users.length; i++) System.out.println(users[i]); 结果: Userid=2, name=‘蛋挞‘, price=21 Userid=3, name=‘牛排‘, price=25 Userid=1, name=‘寿司‘, price=29
以上是关于关于 Comparable 的使用的主要内容,如果未能解决你的问题,请参考以下文章