ht-7 对arrayList中的自定义对象排序

 1 package com.iotek.set;
 2
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Comparator;
 6 import java.util.List;
 7 /**
 8  *
 9  * 对ArrayList容器中的内容进行排序: ArrayList中存储多个Person对象(具有name,age,id属性),
10  * 要求按照年龄从小到大排序,年龄相等的话再按照名字的自然顺序来排序输出
11  * 思路:
12  * 使用ArrayList来存储Person对象,使用Collections类所提供的静态方法sort来按照要求对
13  * ArrayList进行排序,然后输出排序好的信息。
14  * @author Administrator
15  *
16  */
17 public class CollectionsDemo2 {
18     /* 1.创建一个ArrayList容器
19      * 2.创建一个Person类,具有name,age,id属性
20      * 3.对容器中的数据排序,用Collections类的方法sort对List接口的实现类排序
21      * 4.输出排序好的内容 */
22
23     public static void main(String[] args) {
24         List<Personc> data = new ArrayList<Personc>();
25         data.add(new Personc("jack",20,10));
26         data.add(new Personc("rose",10,7));
27         data.add(new Personc("mary",30,6));
28         data.add(new Personc("zhang",50,18));
29         data.add(new Personc("jay",20,11));
30         Collections.sort(data, new Comparator<Personc>() {
31             @Override
32             public int compare(Personc o1, Personc o2) {
33 //                首先按年龄来排序
34                 if(o1.getAge() - o2.getAge() > 0) {
35                     return 1;
36                 } else if(o1.getAge() - o2.getAge() < 0) {
37                     return -1;
38                 } else { //年龄相等时,再按照名字来进行排序,
39                     /*具体的字符串是String类的实例化对象,可以调用String类的
40                      * compareTo(String anotherString)方法来对字符串按照字典顺序进行排序
41 */                    return o1.getName().compareTo(o2.getName());
42                 }
43             }
44         });
45
46         for(Personc p : data) {
47             System.out.println(p.toString());
48         }
49     }
50
51 }
52 /* sort(List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定列表进行排序
53  * Comparator<? super T> c   c表示一个比较器,比较器可以用匿名内部类来实现
54  * 匿名内部类产生的是个接口的实现类对象,因此要实现这个接口中的compare()方法   */
55 /*String.compareTo(String anotherString) 按字典顺序比较两个字符串,返回一个int类型的值*/
56
57 class Personc {
58     private String name;
59     private int age;
60     private int id;
61     public Personc(String name, int age, int id) {
62         super();
63         this.name = name;
64         this.age = age;
65         this.id = id;
66     }
67     public String getName() {
68         return name;
69     }
70     public void setName(String name) {
71         this.name = name;
72     }
73     public int getAge() {
74         return age;
75     }
76     public void setAge(int age) {
77         this.age = age;
78     }
79     public int getId() {
80         return id;
81     }
82     public void setId(int id) {
83         this.id = id;
84     }
85     @Override
86     //重写toString方法,定义打印格式
87     public String toString() {
88         return "Person [name=" + name + ", age=" + age + ", id=" + id + "]";
89     }
90
91 }

原文地址:https://www.cnblogs.com/enjoyjava/p/9393398.html

时间: 2024-10-29 01:07:39

ht-7 对arrayList中的自定义对象排序的相关文章

集合中存储自定义对象源代码

集合中存储自定义对象: package attention; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Main_7 { public static void main(String[] args) { Collection coll=new ArrayList(); coll.add(new Person("List1",21));

NSArary自定义对象排序 NSComparator, compare

reference from :http://mobile.51cto.com/hot-434804.htm 1.构建Person类 Person.h @interface Person : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *surname; @property (nonatomic, strong) NSDate *dateOfBirth; @en

js中的数组对象排序

一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"

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

本文内容参考JavaScript高级程序设计(第3版)第6章:面向对象的程序设计 ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”我所理解的就是对象就是一个结构体,结构体中有一些它的基本属性以及对结构体处理的方法,把它们封装起来称为一个整体.JS中所有的对象都是基于一个引用类型创建,这个引用类型可以是原生类型,如Array,Date等,也可以是开发人员自定义的类型. 下面主要总结下JS中创建对象的几种模式,分析他们各自的优缺点. 1. 工厂模式 /****

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

ListDemo2.java ----------------- package com.fs.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /* * Collections可以针对ArrayList存储基本包装类的元素排序,存储自定义对象可不可以排序呢? */ public class Listdemo2 {

C#自定义对象排序

数组对象Array有一个Sort方法(点击查看Sort方法的实现),专门是用来排序的,请看下图 如果我们想为自己的类添加一个排序,只需要继承IComparable接口,实现CompareTo方法就行: 调用CompareTo方法内部实现对象的比较,通过返回值确定对象的顺序 负数值,当前对象<参数对象 正数值,当前对象>参数对象 零,两个对象相等 下面我们就根据接口自定义自己的对象排序方式 1 class People:IComparable 2 { 3 public uint Age { ge

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

定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所

Javascript 中创建自定义对象的方法(设计模式)

Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. 1 var student = new Object(); 2 student.name = "xiao ming"; 3 student.age = 20; 4 student.getName = function () { 5 alert(this.name); 6 } 熟悉javascrip

.NET/C#中对自定义对象集合进行自定义排序的方法

一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car类型,要把它排序,系统是不知道怎么办的. 那么,如何告知系统排序的规则呢?有以下几种方法: 1:对类实现IComparable接口,示例如下: [csharp] view plain copy print? using System; using System.Collections.Generic