package com.iotek.set;

 import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* 对ArrayList容器中的内容进行排序: ArrayList中存储多个Person对象(具有name,age,id属性),
* 要求按照年龄从小到大排序,年龄相等的话再按照名字的自然顺序来排序输出
* 思路:
* 使用ArrayList来存储Person对象,使用Collections类所提供的静态方法sort来按照要求对
* ArrayList进行排序,然后输出排序好的信息。
* @author Administrator
*
*/
public class CollectionsDemo2 {
/* 1.创建一个ArrayList容器
* 2.创建一个Person类,具有name,age,id属性
* 3.对容器中的数据排序,用Collections类的方法sort对List接口的实现类排序
* 4.输出排序好的内容 */ public static void main(String[] args) {
List<Personc> data = new ArrayList<Personc>();
data.add(new Personc("jack",20,10));
data.add(new Personc("rose",10,7));
data.add(new Personc("mary",30,6));
data.add(new Personc("zhang",50,18));
data.add(new Personc("jay",20,11));
Collections.sort(data, new Comparator<Personc>() {
@Override
public int compare(Personc o1, Personc o2) {
// 首先按年龄来排序
if(o1.getAge() - o2.getAge() > 0) {
return 1;
} else if(o1.getAge() - o2.getAge() < 0) {
return -1;
} else { //年龄相等时,再按照名字来进行排序,
/*具体的字符串是String类的实例化对象,可以调用String类的
* compareTo(String anotherString)方法来对字符串按照字典顺序进行排序
*/ return o1.getName().compareTo(o2.getName());
}
}
}); for(Personc p : data) {
System.out.println(p.toString());
}
} }
/* sort(List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定列表进行排序
* Comparator<? super T> c c表示一个比较器,比较器可以用匿名内部类来实现
* 匿名内部类产生的是个接口的实现类对象,因此要实现这个接口中的compare()方法 */
/*String.compareTo(String anotherString) 按字典顺序比较两个字符串,返回一个int类型的值*/ class Personc {
private String name;
private int age;
private int id;
public Personc(String name, int age, int id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
//重写toString方法,定义打印格式
public String toString() {
return "Person [name=" + name + ", age=" + age + ", id=" + id + "]";
} }

ht-8 对arrayList中的自定义对象排序( Collections.sort(List<T> list, Comparator<? super T> c))的更多相关文章

  1. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

  2. Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法

    1. 要求 对列表(List)中的自定义对象,要求能够按照对象的属性(字段)进行排序(正序.倒序). 如:用户对象(Member)有用户名(username).级别(level).出生日期(birth ...

  3. Java基础知识强化之集合框架笔记69:Collections类之ArrayList存储自自定义对象并排序的案例

    1. ArrayList存储自自定义对象并排序的案例: ArrayList存储自自定义对象,并使用Collections对ArrayList存储基本包装类的元素排序. 2. 代码实现: (1)Stud ...

  4. 在配置文件(.settings、.config)中存储自定义对象

    原文:在配置文件(.settings..config)中存储自定义对象 引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出“sett ...

  5. 对ArrayList中的Person对象按照先年龄从大到小,相同年龄的再按照姓名(姓名是英文的)的字母顺序进行排序.

    ListDemo2.java ----------------- package com.fs.test; import java.util.ArrayList; import java.util.C ...

  6. NSArary自定义对象排序 NSComparator, compare

    reference from :http://mobile.51cto.com/hot-434804.htm 1.构建Person类 Person.h @interface Person : NSOb ...

  7. JavaScript中创建自定义对象的方法

    本文内容参考JavaScript高级程序设计(第3版)第6章:面向对象的程序设计 ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”我所理解的就是对象就是一个结构 ...

  8. js中的数组对象排序

    一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var ar ...

  9. [ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法

    对数组中的元素进行排序. 此方法按 Unicode 值排序. (ASCII 是 Unicode 的一个子集.) 默认情况下,Array.sort()按以下方式进行排序: 1. 排序区分大小写(Z优先于 ...

随机推荐

  1. EF2:Entity Mysql Sample

    1)概念 Entity Framework: 全称ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架.百 ...

  2. delphi编写提取exe文件的ICO图标

    http://www.duote.com/tech/4/11797.html delphi编写提取exe文件的ICO图标 7.0分 出处:天下网吧 时间:2011-08-05 人气:2390 核心提示 ...

  3. Free Pascal User’s Guide

    https://www.freepascal.org/docs-html/current/user/user.html

  4. 一些输出、处理细节&注意点

    https://blog.csdn.net/qq_41071646/article/details/79953476 输出百分比的时候,结果需要加上一个EPS(1e-6)四舍五入保证精度. 卡精度—— ...

  5. Java基础/发起http和https请求

    Java中发起http和https请求 一般调用外部接口会需要用到http和https请求. 本案例为:前后端完全分离,前端框架(React+Mobx+Nornj),后端(Go语言). 面临问题:跨域 ...

  6. 如何在Web工程中实现任务计划调度

    转载自: http://www.oschina.net/question/146385_37793?sort=time 下面就Servlet侦听器结合Java定时器来讲述整个实现过程.要运用Servl ...

  7. [2019杭电多校第七场][hdu6655]Just Repeat

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁 ...

  8. dfs(找环)

    https://codeforces.com/problemset/problem/1249/B2 B2. Books Exchange (hard version) time limit per t ...

  9. JVM内存模型及参数调优

    堆.栈.方法区概念区别 1.堆 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.根据垃圾回收机制的不同, Java堆有可能拥有不同的结构,最为常见的就是 ...

  10. 前端校招知识体系之css

    本文将从以下四个方面展开介绍: 选择器 样式表继承 css3部分特性 BFC css选择器优先级策略 先附上个链接:css选择器参考手册 内联>id>class=属性选择器=伪类选择器&g ...