对象数组 排序-根据其中一个属性
排序就不再调用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
对象数组 排序-根据其中一个属性相关推荐
- html跨页面传数组,如何把一个页面的对象数组传到另外一个页面,没有后台,存js_html/css_WEB-ITnose...
我有两个页面,没有后台,只是用HTML实现.比如我有 1.html和2.html两页面. 在1.html中有一个temp数组,数组是存放image对象.1.html中有一个提交按钮,点击提交按钮,会打 ...
- 【ES6新特性】一行代码解决:搜索对象数组,匹配具体字段属性值的返回值和索引的问题
arr.find(v => v.key == "需要搜索的值") //返回搜索匹配字段属性值的对象arr.findIndex(v => v.key == "需 ...
- iOS开发之谓词Predicate和对象数组的排序
我们在开发中经常使用的Predicate谓词,主要是正则表达式的使用,今天给大家简单的讲讲怎样去使用谓词. 因为内容比较简单,所以直接上代码展示: NSMutableArray *people_arr ...
- js 对象数组中的已知对象的属性得到对象下标
arr 对象数组, wyw已知属性 多用于接口返回数据后根据已知属性查其他属性 var arr = new Array({"name": "wxx", &quo ...
- 扩展js对象数组的OrderByAsc和OrderByDesc方法
看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排 ...
- 两个对象数组去重的3种方法
两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...
- java创建数组对象_java对象数组 创建对象数组,初始化对象数组
对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...
- java对象数组 创建对象数组,初始化对象数组
对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组. 当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象. 对象数组的定义和使用: 对象数组 ...
- 关于java的对象数组
以前做程序基本没有用过对象数组,今做一个小程序时用到了,但运行时却出现一些问题, 经过一翻分析和多次调试后,终于找到了原因!!! 我在是做GUI程序时用到的对象数组,下面是我程序中的一部份; 我在类中 ...
最新文章
- 【重磅】AI击败顶级德扑玩家的秘密!德扑AI创造者现身reddit,全面解答34个提问,详解Libratus的现状和未来
- C++ link2005 error 错误 解决方法汇总(一般重复定义,如果都是不就是 函数定义和实现没有分离)...
- C#服务中Process的应用!
- linux开权限变绿了,解读Linux文件权限的设置方法
- CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块
- Soft Skill
- RePlugin插件接入指南
- 演讲(1)--演讲小故事
- 第 4 章 Spring
- mybatis where、set、trim、sql、foreach标签的使用
- 注意细节:Javascript中的变量作用域
- python3: failed with error code 1 in /tmp/pip-build-qp5puacl/Pillow/
- 【2020年高被引学者】 韩家炜 伊利诺伊大学香槟分校
- Python 网络爬虫实战:如何下载小红书去水印图片
- 100ask imx6ull开发板移植NXP官方UBOOT
- Python爬虫-爬取豆瓣读书
- 互联网创业的五大定律
- python自动获取cookie_python如何获取cookie
- 计算机中的刷新用英语怎么说,刷新的英语怎么说
- java集合 — — lterator迭代器