作为一名刚上路的超初级程序员,今天终于可以迈开自己的第一步,写一篇博客。把我自己都感动哭了。

今天看面试题时看到了一个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]);
}
结果:    User{id=2, name='蛋挞', price=21}
User{id=3, name='牛排', price=25}
User{id=1, name='寿司', price=29}

1234567.

最新文章

  1. 欢迎来到Joyful Physics博客
  2. login
  3. 标签中id和name的作用和区别
  4. Atitit ACID解决方案2PC(两阶段提交)&#160;&#160;跨越多个数据库实例的ACID保证
  5. 基于SSH2框架Struts2拦截器的登录验证实现(转)
  6. POJ 3580 (伸展树)
  7. tomcat 内存溢出
  8. ios 多任务学习笔记
  9. 读书笔记之 - javascript 设计模式 - 组合模式
  10. 使用关联对象(AssociatedObject)为UIButton添加Block响应
  11. 软件测试_Fiddler抓包工具一
  12. 【BZOJ5287】[HNOI2018]毒瘤(动态规划,容斥)
  13. influxDB和grafana
  14. linux 输出重定向
  15. 【LeeCode23】Merge k Sorted Lists★★★
  16. mongodb基础学习13-聚集aggregate操作
  17. Global Vectors forWord Representation
  18. PHP利用rand(1,100)函数产生10个1~100之间的随机数
  19. C#图片增加水印
  20. config.sql

热门文章

  1. 深入探索Java设计模式之单例模式
  2. 201871010119-帖佼佼《面向对象程序设计(java)》第十二周学习总结
  3. Vue ---- vue的基本使用 文本/事件/属性指令 补充: js面向对象 js函数
  4. java8-详解Lamda表达式
  5. Typroa 常用快捷键
  6. Day01-基础数据类型/用户交互/流程控制之-if
  7. 开源资产管理系统Snipe-IT
  8. SQL数据库基础
  9. 面试连环炮系列(七):HashMap的put操作做了什么
  10. 【转载】记一次因 Redis 使用不当导致应用卡死 bug 的排查及解决!