Java中的2种集合排序方法介绍_java

直接上代码:

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

/**
 *
 * <p>
 * ClassName CollectionsSort
 * </p>
 * <p>
 * Description 主要介绍两种集合的排序算法<br/>
 * 第一:java.util.Collections.sort(java.util.List),要求所排序元素必须实现java.lang.Comparable接口 <br/>
 * 第二:java.util.Collections.sort(java.util.List, java.util.Comparator),这个方法要求实现java.util.Comparator接口 <br/>
 * 第三:下面的例子使用的是对int型属性排序,对String属性排序可以使用以下方法<br/>
 * public int compareTo(Cat o){return this.getName().compareTo(o.getName(0);}<br/>
 * 第四:compareTo()函数的说明 <br/>
 * 如果 结果;<br/>
 * <0 a<b ;<br/>=
 * ==0 a==b;<br/>
 * >=0 a>b;
 * </p>
 *
 * @author wangxu wangx89@126.com
 *     <p>
 *     Date 2014-9-16 下午04:52:57
 *     </p>
 * @version V1.0
 *
 */

public class CollectionsSort {
	public static void main(String[] args) {
		// method1();测试第一个方法
		method2();// 测试第二个方法
	}

	public static void method1() {
		List<Cat> list = new ArrayList<Cat>();
		Cat c = new Cat("a", 10);
		list.add(c);
		c = new Cat("b", 20);
		list.add(c);
		c = new Cat("c", 3);
		list.add(c);
		// 升序排列输出
		Collections.sort(list);
		System.out.println(list);
		// 降序排列输出
		Collections.sort(list, Collections.reverseOrder());
		System.out.println(list);
	}

	public static void method2() {
		List<Cat> list = new ArrayList<Cat>();
		Cat c = new Cat("a", 10);
		list.add(c);
		c = new Cat("b", 20);
		list.add(c);
		c = new Cat("c", 3);
		list.add(c);
		Comparator<Cat> catComparator = new Cat();
		// 升序排列输出
		Collections.sort(list, catComparator);
		System.out.println(list);
		// 降序排列输出
		catComparator = Collections.reverseOrder(catComparator);
		Collections.sort(list, catComparator);
		System.out.println(list);
	}
}

class Cat implements Comparable<Cat>, Comparator<Cat> {
	private int age;
	private String name;

	public Cat() {
	}

	public Cat(String name, int age) {
		this.age = age;
		this.name = name;
	}

	public int getAge() {
		return this.age;
	}

	public String getName() {
		return this.name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public void setName(String name) {
		this.name = name;
	}

	// 实现了Comparable接口,不要重写该方法
	@Override
	public int compareTo(Cat o) {
		// TODO Auto-generated method stub
		return this.age - o.age;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "名字:" + getName() + ",年龄:" + getAge();
	}

	// 实现了Comparator接口,需要重写该方法
	@Override
	public int compare(Cat o1, Cat o2) {
		// TODO Auto-generated method stub
		return o1.getAge() - o2.getAge();
	}

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
集合排序方法
java集合排序方法、java 集合排序、java list集合排序、java自动排序的集合、java set集合排序,以便于您获取更多的相关知识。

时间: 2024-11-02 07:35:42

Java中的2种集合排序方法介绍_java的相关文章

java中数组的定义及使用方法(推荐)_java

数组:是一组相关变量的集合 数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组.二维数组.多维数组 数据的有点 不使用数组定义100个整形变量:int i1;int i2;int i3 使用数组定义 int i[100]; 数组定义:int i[100];只是一个伪代码,只是表示含义的 一维数组 一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的, 使用java数组,必须经过两个步骤,声明数组和分配内存给该数组, 声明形式一 声明一维数组:数据类型

浅谈Java中的四种引用方式的区别_java

强引用.软引用.弱引用.虚引用的概念 强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用: Object object = new Object(); String str = "hello"; 只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象. 比如下面这段代码: public class Main { publi

基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍_java

#. 在java中有两类内存.分别称为stack(堆栈)和heap(堆). stack是程序内存空间,因此所有的基本类型和对象的引用是存在stack中. heap是java虚拟机储存对象的,它是一个巨大的内存,当你创造一个对象,java虚拟机把对象放入heap中,把创造的对象的地址放入stack中. 因此,基本类型.对象的引用储存在stack中:对象储存在heap中. #. java中的垃圾回收机制 当你new一个新的对象,java分配必需的内存.当你用完一个对象时,java的垃圾回收器为你把内

java中实现汉字按照拼音排序(示例代码)_java

最近項目中需要對繁體字按拼音進行排序 复制代码 代码如下: public static void main(String[] args) {    Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);        String[] arr = { "张三", "李四", "王五", "刘六" ,"周濤","戴笠",

常用的几种asp排序方法介绍

排序  <% DimaDataaData=Array(3,2,4,1,6,0) CallResponseArray(aData,"原来顺序")CallResponseArray(SelectSort(aData),"选择排序")CallResponseArray(QuickSort(aData),"快速排序")CallResponseArray(InsertSort(aData),"插入排序")CallResponseA

java中HttpServletRequest可获取的URI方法介绍

HttpServletRequest 方法可获取的URI, 以http://localhost:8080/project/path/test?param=val 为例 request.getPathInfo():返回/path/test request.getRequestURL():返回http://localhost:8080/project/path/test request.getRequestURI():返回/project/path/test request.getServletPa

Java中使用Preconditions来检查传入参数介绍_java

Preconditions是Guava中的一个类库,用于检查传入参数,一个常见用法如下: boolean findElement(List<String> elements, String desiredElement) { checkNotNull(elements); // ... } 用法简单明了,就是检查参数elements是不是null,如果是null则扔出NullPointerException.当然Preconditions类里还有其它方法,可能满足几乎所有的传入参数的检查.Pr

浅谈Java中的n种随机数产生办法_java

我们从书本上学到什么? 最明显的,也是直观的方式,在Java中生成随机数只要简单的调用: java.lang.Math.random() 在所有其他语言中,生成随机数就像是使用Math工具类,如abs, pow, floor, sqrt和其他数学函数.大多数人通过书籍.教程和课程来了解这个类.一个简单的例子:从0.0到1.0之间可以生成一个双精度浮点数.那么通过上面的信息,开发人员要产生0.0和10.0之间的双精度浮点数会这样来写: Math.random() * 10 而产生0和10之间的整数

JAVA四种基本排序方法实例总结_javascript技巧

本文实例讲述了JAVA四种基本排序方法.分享给大家供大家参考.具体如下: JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 一 插入法: 遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置.交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把