Java排序

本文详细介绍Java中对基本类型、字符串及对象的排序方法,包括数组和集合的排序操作,通过实现Comparable接口、Comparator接口以及使用BeanComparator进行排序的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对基本类型及String类型进行排序

1.1对数组进行排序

import java.util.Arrays;

public class testSort {
	public static void main(String[] args) {
		
	    String[] str = new String[] {"Jack", "Rose", "Java","Amen","java"};
	    Arrays.sort(str);//区分大小写排序,升序
	    for(String s:str)
			System.out.println("name:"+s);
		Arrays.sort(str, String.CASE_INSENSITIVE_ORDER);//不区分大小写排序,升序
		//Collections.reverse(Arrays.asList(str)); //降序,Arrays.asList(str):将数组转化为List
		for(String s:str)
			System.out.println("name:"+s);

	}
}


name:Amen
name:Jack
name:Java
name:Rose
name:java
-----------
name:Amen
name:Jack
name:Java
name:java
name:Rose
-----------
name:Rose
name:java
name:Java
name:Jack
name:Amen

1.2对集合List进行排序

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

public class testSort {
	public static void main(String[] args) {
		List<String> listNames=new ArrayList<String>();
		listNames.add("Jack");
		listNames.add("Rose");
		listNames.add("Java");
		listNames.add("Amen");
		Collections.sort(listNames);
		
		for(String s:listNames)
			System.out.println("name:"+s);
	}
}

-----------------
name:Amen
name:Jack
name:Java
name:Rose
-----------------

2.对对象类型进行排序
2.1使用Comparable接口实现

public class Name implements Comparable<Name> {
	public String firstName, lastName;

	public Name(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public int compareTo(Name o) {//实现接口
		int lastNameCmp = lastName.compareTo(o.lastName);
		return (lastNameCmp != 0 ? lastNameCmp : firstName
				.compareTo(o.firstName));
	}

	public String toString() {
		return firstName + " " + lastName;
	}
}

import java.util.Arrays;

public class testSort {
	public static void main(String[] args) {

		Name[] nameArray = new Name[] { new Name("Kim", "Lua"),
				new Name("Hsing", "Hsu"), new Name("James", "Jone"),
				new Name("Came", "Blue"), new Name("Simmon", "Hsing") };
		Arrays.sort(nameArray);//若是集合List,则使用Collections.sort(list);
		for (Name n : nameArray) {
			System.out.println(n.toString());
		}
	}
}

-------------
Came Blue
Simmon Hsing
Hsing Hsu
James Jone
Kim Lua

2.2使用Comparator接口实现
Comparator是个接口,比较的是两个对象,比较规则用户定义,需重写compare方法.
compare(a,b):根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。

public class Name{
	public String firstName, lastName;

	public Name(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String toString() {
		return firstName + " " + lastName;
	}
}

import java.util.Comparator;

public class NameCompare implements Comparator<Name> {
	public int compare(Name n1, Name n2) {
		int firstNameCmp = n1.firstName.compareTo(n2.firstName);
		return (firstNameCmp != 0 ? firstNameCmp : n1.lastName.compareTo(n2.firstName));
	}
}

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class testSort {
	public static void main(String[] args) {

		Name[] nameArray = new Name[] { new Name("Kim", "Lua"),
				new Name("Hsing", "Hsu"), new Name("James", "Jone"),
				new Name("Came", "Blue"), new Name("Simmon", "Hsing") };
		List<Name> list=Arrays.asList(nameArray); //将数组转成List
		Collections.sort(list,new NameCompare());
		for (Name n : nameArray) {
			System.out.println(n.toString());
		}
	}
}
--------------
Came Blue
Hsing Hsu
James Jone
Kim Lua
Simmon Hsing

2.3使用BeanComparator类实现
BeanComparator实际也是实现Comparable接口的,它是BeanUtils API中的一个类,使用它可以很简单地根据任何属性对Bean类进行排序。
导入包

import org.apache.commons.beanutils.BeanComparator;

直接使用

Collections.sort(list, new BeanComparator("firstName"));
即可。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值