1.对基本类型及String类型进行排序
1.2对集合List进行排序
2.对对象类型进行排序
2.1使用Comparable接口实现
2.2使用Comparator接口实现
Comparator是个接口,比较的是两个对象,比较规则用户定义,需重写compare方法.
compare(a,b):根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
2.3使用BeanComparator类实现
BeanComparator实际也是实现Comparable接口的,它是BeanUtils API中的一个类,使用它可以很简单地根据任何属性对Bean类进行排序。
导入包
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"));
即可。