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中表示系统信息如cpu mem disk等内容都在 /proc

    linux中表示系统信息的 内容都在 /proc 要查看系统的任何信息, 如cpu mem 磁盘等等, 都在 /proc下, 如: cpuinfo ,meminfo diskstatus 等等

  2. 裸BFS题若干

    1poj 3278 http://poj.org/problem?id=3278 #include<math.h> #include<algorithm> #include&l ...

  3. 【tensorflow使用笔记三】:tensorflow tutorial中的源码阅读

    https://blog.csdn.net/victoriaw/article/details/61195620#t0 input_data 没用的另一种解决方法:tensorflow1.8版本及以上 ...

  4. Java面试中hashCode()与equals(Object obj)方法关系的准确回答

    原文地址: https://blog.csdn.net/qq_19260029/article/details/77917925 hashCode()与equals(Object obj)都是Java ...

  5. python库文件文档的查看

    python库文件文档的查看 第一步:cmd窗口输入:python -m pydoc -p 4567,后台运行 第二步:浏览器中打开http://localhost:4567/

  6. 类InetAddress

    如果一个类没有构造方法:A:成员全部是静态的(Math,Arrays,Collections)B:单例设计模式(Runtime)C:类中有静态方法返回该类的对象(InetAddress) public ...

  7. linux上搭建nginx+ftp,实现文件的上传与访问

    ftp服务器搭建 1.新建用户ftpuser并指定主目录为/home/ftpuser (注意:这个目录是后面存储和读取文件的目录) <!--创建用户并指定主目录--> useradd -d ...

  8. 孩子王app自动签到送现金券

    今天在某商场的孩子王店给小孩买东西时发现,app连续签到3天即可获得一张5元现金券. 回到家中,花几分钟Fiddler抓包分析写了个自动签到的代码. var cookies = new string[ ...

  9. pandas 入门(3)

    from pandas import Series, DataFrame, Index import numpy as np # 层次化索引 对数据重塑和分组操作很有用 data = Series(n ...

  10. oracle--高级使用(merge)(递归START WITH)分析函数over

    1.俩种表复制语句 SELECT INTO和INSERT INTO SELECT两种表复制语句 CT: create table <new table> as select * from ...