更新时间:2022-09-19 23:05:56
public interface Comparable<T> {
public int compareTo(T o);
}
|
类
|
排序
|
BigDecimal,BigInteger,Byte,Double, Float,Integer,Long,Short
|
按数字大小排序
|
Character
|
按 Unicode 值的数字大小排序
|
String
|
按字符串中字符 Unicode 值排序
|
package com.zj.sort.comparable;
public class Person implements Comparable<Person> {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int compareTo(Person person) {
int cop = age - person.getAge();
if (cop != 0)
return cop;
else
return name.compareTo(person.name);
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public int hashCode() {
int result = 17;
result = 37 * result + age;
result = 37 * result + name.hashCode();
return result;
}
public boolean equals(Object o) {
if (!(o instanceof Person))
return false;
Person person = (Person) o;
return (age == person.age) && (name.equals(person.name));
}
public String toString() {
return (age + "{" + name + "}");
}
}
|
package com.zj.sort.comparable;
import java.util.Arrays;
import com.zj.compare.Person;
public class ArraysSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom"), new Person(20, "Jeff"),
new Person(30, "Mary"), new Person(20, "Ada"),
new Person(40, "Walton"), new Person(61, "Peter"),
new Person(20, "Bush") };
System.out.println(Arrays.toString(ps));
Arrays.sort(ps);
System.out.println(Arrays.toString(ps));
}
}
|
package com.zj.sort.comparable;
import java.util.Arrays;
import java.util.Collections;
import com.zj.compare.Person;
public class CollctionsSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom"), new Person(20, "Jeff"),
new Person(30, "Mary"), new Person(20, "Ada"),
new Person(40, "Walton"), new Person(61, "Peter"),
new Person(20, "Bush") };
System.out.println(Arrays.toString(ps));
Collections.sort(Arrays.asList(ps));
System.out.println(Arrays.toString(ps));
}
}
|
package com.zj.sort.comparable;
import java.util.TreeSet;
import com.zj.compare.Person;
public class TreeSetUnit {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<Person>();
set.add(new Person(20, "Tom"));
set.add(new Person(20, "Jeff"));
set.add(new Person(30, "Mary"));
set.add(new Person(20, "Ada"));
set.add(new Person(40, "Walton"));
set.add(new Person(61, "Peter"));
set.add(new Person(20, "Bush"));
System.out.println(set);
}
}
|
package com.zj.sort.comparable;
import java.util.TreeMap;
import com.zj.compare.Person;
public class TreeMapUnit {
public static void main(String[] args) {
TreeMap<Person, String> map = new TreeMap<Person, String>();
map.put(new Person(20, "Tom"), "Tom");
map.put(new Person(20, "Jeff"), "Jeff");
map.put(new Person(30, "Mary"), "Mary");
map.put(new Person(20, "Ada"), "Ada");
map.put(new Person(40, "Walton"), "Walton");
map.put(new Person(61, "Peter"), "Peter");
map.put(new Person(20, "Bush"), "Bush");
System.out.println(map);
}
}
|
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}
|
package com.zj.sort.comparator;
public class Person {
private String firstName;
private String lastName;
private int age;
public Person(int age, String firstName, String lastName) {
this.age = age;
this.firstName = firstName;
this.lastName = lastName;
}
public int getAge() {
return age;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int hashCode() {
int result = 17;
result = 37 * result + age;
result = 37 * result + firstName.hashCode();
result = 37 * result + lastName.hashCode();
return result;
}
public boolean equals(Object o) {
if (!(o instanceof Person))
return false;
Person p = (Person) o;
return (age == p.age) && (firstName.equals(p.firstName))
&& (lastName.equals(p.lastName));
}
public String toString() {
return (age + "{" + firstName + " " + lastName + "}");
}
}
|
package com.zj.sort.comparator;
import java.util.Comparator;
//实现按FirstName优先排序
public class FirstNameComparator implements Comparator<Person> {
public int compare(Person person, Person anotherPerson) {
String lastName1 = person.getLastName().toUpperCase();
String firstName1 = person.getFirstName().toUpperCase();
String lastName2 = anotherPerson.getLastName().toUpperCase();
String firstName2 = anotherPerson.getFirstName().toUpperCase();
if (firstName1.equals(firstName2))
return lastName1.compareTo(lastName2);
else
return firstName1.compareTo(firstName2);
}
}
|
package com.zj.sort.comparator;
import java.util.Comparator;
//实现按LastName优先排序
public class LastNameComparator implements Comparator<Person> {
public int compare(Person person, Person anotherPerson) {
String lastName1 = person.getLastName().toUpperCase();
String firstName1 = person.getFirstName().toUpperCase();
String lastName2 = anotherPerson.getLastName().toUpperCase();
String firstName2 = anotherPerson.getFirstName().toUpperCase();
if (lastName1.equals(lastName2))
return firstName1.compareTo(firstName2);
else
return lastName1.compareTo(lastName2);
}
}
|
package com.zj.sort.comparator;
import java.util.Arrays;
public class ArraysSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom", "A"),
new Person(20, "Jeff", "A"), new Person(30, "Mary", "A"),
new Person(20, "Ada", "B"), new Person(40, "Walton", "B"),
new Person(61, "Peter", "B"), new Person(20, "Bush", "B") };
System.out.println(Arrays.toString(ps));
Arrays.sort(ps,new FirstNameComparator());
System.out.println(Arrays.toString(ps));
Arrays.sort(ps,new LastNameComparator());
System.out.println(Arrays.toString(ps));
}
}
|
package com.zj.sort.comparator;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom", "A"),
new Person(20, "Jeff", "A"), new Person(30, "Mary", "A"),
new Person(20, "Ada", "B"), new Person(40, "Walton", "B"),
new Person(61, "Peter", "B"), new Person(20, "Bush", "B") };
System.out.println(Arrays.toString(ps));
Collections.sort(Arrays.asList(ps),new FirstNameComparator());
System.out.println(Arrays.toString(ps));
Collections.sort(Arrays.asList(ps),new LastNameComparator());
System.out.println(Arrays.toString(ps));
}
}
|
package com.zj.sort.comparator;
import java.util.TreeSet;
public class TreeSetUnit {
public static void main(String[] args) {
TreeSet<Person> firstNameSet = new TreeSet<Person>(
new FirstNameComparator());
firstNameSet.add(new Person(20, "Tom", "A"));
firstNameSet.add(new Person(20, "Jeff", "A"));
firstNameSet.add(new Person(30, "Mary", "A"));
firstNameSet.add(new Person(20, "Ada", "B"));
firstNameSet.add(new Person(40, "Walton", "B"));
firstNameSet.add(new Person(61, "Peter", "B"));
firstNameSet.add(new Person(20, "Bush", "B"));
System.out.println(firstNameSet);
TreeSet<Person> lastNameSet = new TreeSet<Person>(
new LastNameComparator());
lastNameSet.addAll(firstNameSet);
System.out.println(lastNameSet);
}
}
|
package com.zj.sort.comparator;
import java.util.TreeMap;
public class TreeMapUnit {
public static void main(String[] args) {
TreeMap<Person, String> firstNameMap = new TreeMap<Person, String>(
new FirstNameComparator());
firstNameMap.put(new Person(20, "Tom", "A"), "Tom A");
firstNameMap.put(new Person(20, "Jeff", "A"), "Jeff A");
firstNameMap.put(new Person(30, "Mary", "A"), "Mary A");
firstNameMap.put(new Person(20, "Ada", "B"), "Ada B");
firstNameMap.put(new Person(40, "Walton", "B"), "Walton B");
firstNameMap.put(new Person(61, "Peter", "B"), "Peter B");
firstNameMap.put(new Person(20, "Bush", "B"), "Bush B");
System.out.println(firstNameMap);
TreeMap<Person, String> lastNameMap = new TreeMap<Person, String>(
new LastNameComparator());
lastNameMap.putAll(firstNameMap);
System.out.println(lastNameMap);
}
}
|