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. Linux_ISCSI服务器

    目录 目录 网络存储 ISCSI How to setup ISCSI server SCSI Commands Server Side Client Side Edit the ISCSI conf ...

  2. 使用 Spring HATEOAS 开发 REST 服务

    使用 Spring HATEOAS 开发 REST 服务 学习博客:https://www.ibm.com/developerworks/cn/java/j-lo-SpringHATEOAS/ htt ...

  3. 第五周课程总结&实验报告

    一.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) 统计该字符串中字母s出现的次数. 统计该字符串中子串"i ...

  4. linux 截取变量字符串

    STR=123456abc FINAL=`echo ${STR: -1}` 或者 FINAL=${STR: -1} 都可以让FINAL获得c这个最后一个字符   Linux 的字符串截取很有用.有八种 ...

  5. [Python3 填坑] 008 索引君的朋友 in

    目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 前情提要 (2) 索引君的朋友 in 上线 (3) 既然说了 in,不妨再说一说 not in (4) 一些补充 1. print( 坑 ...

  6. 解决在Tomcat中的server.xml中修改了配置,启动后还原的问题

    正确答案,你要在eclipse的项目Servers中,找到你的tomcat,打开有各种配置文件,在这里改,才会在使用eclipse启动tomcat后不会自动恢复.

  7. 1 Python 新建项目

    1 新建项目->新建Python文件 2导入package 库文件 3 import 类似using #include 4 写完代码编译 默认debug的对象是第一个创建的py文件,后续写的文件 ...

  8. [hdu6558][CCPC2018吉林D题]The Moon(期望dp)

    题目链接 当时年少不懂期望$dp$,时隔一年看到这道题感觉好容易.... 定义状态$dp[i]$表示当前的$q$值为$i$时的期望,则当$q$值为$100$时$dp[100]=100/q$,这时后发现 ...

  9. AtCoder Beginner Contest 133 B - Good Distance

    地址:https://atcoder.jp/contests/abc133/tasks/abc133_b 核心问题:判断一个浮点数开方是否为整数 ; double ans1=sqrt(ans); if ...

  10. VBA中Let与Set的区别

    Let与Set的区别 1.在“类模块”中 Property Let 语句 在Class块中,是给普通变量进行赋值操作的Property,该种Property将不能在其前面使用Set,因而将不能用户对对 ...