Java排序

来源:互联网 发布:淘宝一分钱试用电信卡 编辑:程序博客网 时间:2024/05/29 07:00
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):将数组转化为Listfor(String s:str)System.out.println("name:"+s);}}name:Amenname:Jackname:Javaname:Rosename:java-----------name:Amenname:Jackname:Javaname:javaname:Rose-----------name:Rosename:javaname:Javaname:Jackname: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:Amenname:Jackname:Javaname: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 BlueSimmon HsingHsing HsuJames JoneKim 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); //将数组转成ListCollections.sort(list,new NameCompare());for (Name n : nameArray) {System.out.println(n.toString());}}}--------------Came BlueHsing HsuJames JoneKim LuaSimmon Hsing

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

import org.apache.commons.beanutils.BeanComparator;

直接使用

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





原创粉丝点击