排序就不再调用Comparator接口,而是实体类中实现接口Comparable

在实体类中重写compare方法
模型类Fruit
public class FruitBusiness implements Comparator {    @Override    public int compare(Object o1, Object o2) {        Fruit f1 = (Fruit)o1;        Fruit f2 = (Fruit)o2;        if(f2.getPrice() > f1.getPrice())            return 1;// 正数        else if(f1.getPrice() > f2.getPrice())            return -1;// 负数        else            return 0;    }}
//Arrays.sort(array,new FruitComparator());

//代码框模板

//import java.util.Comparator;public class IntComparator implements Comparator {    /**     * 返回0表示相等 返回正数表示前面的数大 返回负数表示后面的数大     */    @Override    public int compare(Object arg0, Object arg1) {        int x = (Integer)arg0;        int y = (Integer)arg1;        return y-x;    }}//或者实体类中重写public int compareTo(Object o) {        Fruit fruit = (Fruit)o;        if(fruit.getPrice() > this.price)            return 1;        else if(this.price > fruit.price)            return -1;        else            return 0;    }//调用//public Fruit(String name, int count, double price) {}Fruit[] array = {        new Fruit("苹果",1000, 10.0),        new Fruit("香蕉",200,3),        new Fruit("榴莲", 100, 20),        new Fruit("菠萝", 20000, 0.5),        new Fruit("梨子", 2000, 2),        new Fruit("板栗", 700, 9)        };////Arrays.sort(array);

//代码框模板

我是想先把对象存到数组里面,然后再对数组里面的对象排序,通过我的比较方式,排序。。。 ------Solutions------
要么实现 Comparable,使用 Arrays.sort(array) 排序

创建一个指定了比较器的comparator排序要么 实现一个 Comparator 使用 Arrays.sort(array, comparator) 排序。
------Solutions------
import java.util.*;

public class CompType implements Comparable<CompType> {//数组中的元素实现Comparable接口    private int i, j;    public CompType(int i, int j) {this.i = i;this.j = j;    }    public String toString() {//这个方法无关紧要,我只是为了输出形式美观一点而重写它,如果你不重写,你可以利用for循环打印数组元素return "[" + i + "," + j + "]";    }    public int compareTo(CompType rv) {//实现这个接口方法,用于数组中元素优先级的比较,我只考虑i的大小return i < rv.i ? -1 : (i == rv.i ? 0 : 1);    }
public static void main(String[] args) {CompType[] a = { new CompType(1, 3), new CompType(5, 5),new CompType(4, 4), new CompType(2, 1),new CompType(3, 2), new CompType(4, 7), new CompType(6, 7), new CompType(7, 3),new CompType(1, 6), new CompType(1, 1), };System.out.println("before sort:" + Arrays.toString(a));Arrays.sort(a);System.out.println("after  sort:" + Arrays.toString(a));    }}////结果://before sort:[[1,3], [5,5], [4,4], [2,1], [3,2], [4,7], [6,7], [7,3], [1,6], [1,1]]//after  sort:[[1,3], [1,6], [1,1], [2,1], [3,2], [4,4], [4,7], [5,5], [6,7], [7,3]]
import java.util.*;

public class CompType{    private int i, j;    public CompType(int i, int j) {this.i = i;this.j = j;    }    public String toString() {//这个方法无关紧要,我只是为了输出形式美观一点而重写它,如果你不重写,你可以利用for循环打印数组元素return "[" + i + "," + j + "]";    }    class CmpTypeComparator implements Comparator<CompType> {public int compare(CompType o1, CompType o2) {//实现这个接口方法,用于数组中元素优先级的比较,我同时考虑了i,j   if(o1.i<o2.i) return -1;   else if(o1.i==o2.i) {       if(o1.j<o2.j) return -1;       else if(o1.j==o2.j)return 0;   }   return 1;    }    }    public static void main(String[] args) {CompType[] a = { new CompType(1, 3), new CompType(5, 5),new CompType(4, 4), new CompType(2, 1),new CompType(3, 2), new CompType(4, 7), new CompType(6, 7), new CompType(7, 3),new CompType(1, 6), new CompType(1, 1), };System.out.println("before sort:" + Arrays.toString(a));Arrays.sort(a,new CompType(0,0).new CmpTypeComparator());System.out.println("after  sort:" + Arrays.toString(a));    }}////结果://before sort:[[1,3], [5,5], [4,4], [2,1], [3,2], [4,7], [6,7], [7,3], [1,6], [1,1]]//after  sort:[[1,1], [1,3], [1,6], [2,1], [3,2], [4,4], [4,7], [5,5], [6,7], [7,3]]

转载于:https://www.cnblogs.com/k624030678/p/7112729.html

对象数组 排序-根据其中一个属性相关推荐

  1. html跨页面传数组,如何把一个页面的对象数组传到另外一个页面,没有后台,存js_html/css_WEB-ITnose...

    我有两个页面,没有后台,只是用HTML实现.比如我有 1.html和2.html两页面. 在1.html中有一个temp数组,数组是存放image对象.1.html中有一个提交按钮,点击提交按钮,会打 ...

  2. 【ES6新特性】一行代码解决:搜索对象数组,匹配具体字段属性值的返回值和索引的问题

    arr.find(v => v.key == "需要搜索的值") //返回搜索匹配字段属性值的对象arr.findIndex(v => v.key == "需 ...

  3. iOS开发之谓词Predicate和对象数组的排序

    我们在开发中经常使用的Predicate谓词,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓词. 因为内容比较简单,所以直接上代码展示: NSMutableArray *people_arr ...

  4. js 对象数组中的已知对象的属性得到对象下标

    arr 对象数组, wyw已知属性 多用于接口返回数据后根据已知属性查其他属性 var arr = new Array({"name": "wxx", &quo ...

  5. 扩展js对象数组的OrderByAsc和OrderByDesc方法

    看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排 ...

  6. 两个对象数组去重的3种方法

    两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...

  7. java创建数组对象_java对象数组 创建对象数组,初始化对象数组

    对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...

  8. java对象数组 创建对象数组,初始化对象数组

    对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...

  9. 关于java的对象数组

    以前做程序基本没有用过对象数组,今做一个小程序时用到了,但运行时却出现一些问题, 经过一翻分析和多次调试后,终于找到了原因!!! 我在是做GUI程序时用到的对象数组,下面是我程序中的一部份; 我在类中 ...

最新文章

  1. 【重磅】AI击败顶级德扑玩家的秘密!德扑AI创造者现身reddit,全面解答34个提问,详解Libratus的现状和未来
  2. C++ link2005 error 错误 解决方法汇总(一般重复定义,如果都是不就是 函数定义和实现没有分离)...
  3. C#服务中Process的应用!
  4. linux开权限变绿了,解读Linux文件权限的设置方法
  5. CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块
  6. Soft Skill
  7. RePlugin插件接入指南
  8. 演讲(1)--演讲小故事
  9. 第 4 章 Spring
  10. mybatis where、set、trim、sql、foreach标签的使用
  11. 注意细节:Javascript中的变量作用域
  12. python3: failed with error code 1 in /tmp/pip-build-qp5puacl/Pillow/
  13. 【2020年高被引学者】 韩家炜 伊利诺伊大学香槟分校
  14. Python 网络爬虫实战:如何下载小红书去水印图片
  15. 100ask imx6ull开发板移植NXP官方UBOOT
  16. Python爬虫-爬取豆瓣读书
  17. 互联网创业的五大定律
  18. python自动获取cookie_python如何获取cookie
  19. 计算机中的刷新用英语怎么说,刷新的英语怎么说
  20. java集合 — — lterator迭代器

热门文章

  1. Spring MVC 教程,快速入门,深入分析——多视图控制器
  2. 【转】C# typeof()实例详解
  3. Windows 2003 主域控和DNS迁移到Windows 2008 R2(2)
  4. android闹钟例子,自己软件中调用android系统闹钟
  5. 贝叶斯神经网络的辩论
  6. Hive用户权限管理理解
  7. Hadoop系列六:Hadoop之HBase篇
  8. Eclipse安装Android开发环境
  9. C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
  10. gorm 返回多条数据_如何优雅的操作数据库?