`

对list集合包含的对象排序

阅读更多

    具了解有几种方法实现,实现Comparable接口,或是实例化一个比较器,现在用 Comparator 比较器实例来做一个测试。

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ComparableTest {
	public static void main(String[] args) {
        //实现Comparator接口的compare方法
		Comparator<Student> comparator = new Comparator<Student>() {
			public int compare(Student s1, Student s2) {
				// 先排年龄
				if (s1.age != s2.age) {
					return s1.age - s2.age;
				} else {
					// 年龄相同则按姓名排序
					if (!s1.name.equals(s2.name)) {
						return s1.name.compareTo(s2.name);
					} else {
						// 姓名也相同则按学号排序
						return s1.id - s2.id;
					}
				}
			}
		};
		
		Student stu1 = new Student(1, "zhangsan", "male", 28, "cs");
		Student stu2 = new Student(2, "lisi", "female", 19, "cs");
		Student stu3 = new Student(3, "wangwu", "male", 22, "cs");
		Student stu4 = new Student(4, "zhaoliu", "female", 17, "cs");
		Student stu5 = new Student(5, "jiaoming", "male", 22, "cs");

		ArrayList<Student> List = new ArrayList<Student>();
		List.add(stu1);
		List.add(stu2);
		List.add(stu3);
		List.add(stu4);
		List.add(stu5);
		//这里就会自动根据规则进行排序
		Collections.sort(List, comparator);
		display(List);
	}

	static void display(ArrayList<Student> lst) {
		for (Student s : lst)
			System.out.println(s);
	}
}

class Student {
	int age;
	int id;
	String gender;
	String name;
	String cs;

	Student(int id, String name, String gender, int age, String cs) {
		this.age = age;
		this.name = name;
		this.gender = gender;
		this.id = id;
		this.cs = cs;
	}

	public String toString() {
		return id + "  " + name + "  " + gender + "  " + age + "  " + cs;
	}
}

 

分享到:
评论

相关推荐

    JAVA集合的使用(List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类、equals、hashCode)

    要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...

    set.list.map接口

    3.Map(映射&lt;集合&gt;)是无序的,是一种把键对象和值对象进行映射的集合,它每一个元素都包含一对键对象和值对象,给出键对象就可以得到值对象,键对象不允许重复,对值没有要求,多个任意键对象可以映射到一个值对象...

    Java集合框架的一个扑克牌小程序

    * 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、...

    java常用工具类的使用

    在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...

    习----题-Java-Web程序设计教程-[共2页].pdf

    在 Java EE 中对数据 进行存储时都可以考虑集合。但要依据存储要求不同(如读优先还是写优先)选择适合的集合类 型。此外,本章还介绍了 Java 泛型编程。限于篇幅,我们没有详细研究泛型编程技术。如果要深 入了解...

    C#学习笔记_20100614

    SortedList: 存储键值对的集合 栈:先进后出队列 队列:先进先出列表 在 C#中遍历和排序对象集合 StringWriter实现的一个功能 创建一个文本文件并写入文本 序列化对象到文件 创建一个文本文件并写入文本 文件夹拷贝 ...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    多功能.NET代码自动生成器(含存储过程)

    解析List数据集合为json数据源,json数据源记录总条数即为List集合的元素个数。 public string GetJsonByList(List&lt;CalendarNotesModel&gt; list, int count) 解析List数据集合为json数据源,json数据源记录总条数为...

    多功能.NET代码自动生成器2.0版(2010年最新修改)

    解析List数据集合为json数据源,json数据源记录总条数即为List集合的元素个数。 public string GetJsonByList(List&lt;CalendarNotesModel&gt; list, int count) 解析List数据集合为json数据源,json数据源记录总条数为...

    Java基础语法面试题.docx

    Java基础语法面试题资源通常是指帮助准备Java编程面试的问题集合,涵盖了Java编程语言的基础概念、语法、特性和...常见算法和数据结构:可能包含一些常见的算法问题,如查找、排序、递归等,以及与之相关的数据结构。

    2023Java高频面试题

    Java集合框架:常用的List、Set、Map等集合类及其实现方式、使用场景、遍历方法等。 异常处理:Java中的异常类型、异常处理机制、如何自定义异常等。 IO流:Java中常用的文件读写、序列化和反序列化等操作。 多线程...

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    Struts2+API+标签全解+网页说明

    iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 append标签:将多个集合对象拼接在一起,组成一个新的集合。将多个集合使用一个标签完成迭代。 generatot标签:将指定的字符串按照规定的分隔符分解...

    Guava 16.0 API (CHM格式)

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    python3实现将json对象存入Redis以及数据的导入导出

    Hash:一个键值(key=&gt;value)对集合 List:简单的字符串列表 Set:string类型的无序集合 Zset:每个元素都会关联一个double类型的分数,redis通过分数来为集合中的成员进行从小到大的排序 Redis基本命令 Key: set, get, ...

    Mootools 1.2教程 排序类和方法简介

    接下来,我们看看如何创建一个新的排序项集合,还有一定要看一下最后的演示实例。 基本知识 创建一个新的Sortable对象 首先,我们要把我们要排序的元素赋值给变量。对于Sortables来说,如果你想要多个列表之间的元素...

    MVC to LinQ

    以上六行包含了排序,循环,合并运算,价格数据不是通过不同的类别的电子表格,Web服务或XML输入的 让数据源更易于访问,可以连接不同的数据源的数据,并且对他们执行标准化的数据处理操作,全部只需要一行代码完成...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

Global site tag (gtag.js) - Google Analytics