package homework;
//要求:1.按照年龄,从小到大排序,2.如果年龄相等,按照姓名字典顺序,
////3.如果姓名也一致,按照书的价格共高到低。
////4.价格一致,按照书名,5.书名也一致,认为是同一对象,不存储
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
import java.util.TreeSet;
public class Test2 {
public static void main(String[] args) {
TreeSet<Person2> set = new TreeSet<Person2>(new Comparator<Person2>() { //匿名类写法
@Override
public int compare(Person2 o1, Person2 o2) {
if(o1.age>o2.age){
return 1;
}else if(o2.age>o1.age){
return -1;
}else{
CollationKey key = Collator.getInstance().getCollationKey(o1.name);
CollationKey key2 = Collator.getInstance().getCollationKey(o2.name);
if(key.compareTo(key2)>0){
return 1;
}else if(key2.compareTo(key)>0){
return -1;
}
else{
if(o1.bookprice>o2.bookprice){
return -1;
}else if(o2.bookprice>o1.bookprice){
return 1;
}
else{
CollationKey key3 = Collator.getInstance().getCollationKey(o1.bookname);
CollationKey key4 = Collator.getInstance().getCollationKey(o2.bookname);
return key3.compareTo(key4);
}
}
}
}
});
set.add(new Person2(1, "刘鑫玉", "java入门指南", 30));
set.add(new Person2(3, "刘海洋", "hh入门指南", 20));
set.add(new Person2(6, "蒋海涛", "ui入门指南", 50));
set.add(new Person2(8, "杨智", "c入门指南", 10));
set.add(new Person2(3, "刘晓红", "android入门指南", 10));
//System.out.println(set);
for (Person2 person2 : set) {
System.out.println(person2);
}
}
}
package homework;
public class Person2 {
int age;
String name;
String bookname;
int bookprice;
public Person2(int age, String name, String bookname, int bookprice) {
super();
this.age = age;
this.name = name;
this.bookname = bookname;
this.bookprice = bookprice;
}
@Override
public String toString() {
return "Person2 [age=" + age + ", bookname=" + bookname
+ ", bookprice=" + bookprice + ", name=" + name + "]";
}
}
************************************************************************************************************************************************************************************
************************************************************************************************************************************************************************************
实现类 实现 接口 写法
package homework;
import java.util.TreeSet;
public class Test3 {
public static void main(String[] args) {
TreeSet<Person3>set = new TreeSet<Person3>(new Person3imp());
set.add(new Person3(1, "刘鑫玉", "java入门指南", 30));
set.add(new Person3(3, "刘海洋", "h5入门指南", 20));
set.add(new Person3(6, "蒋海涛", "ui入门指南", 50));
set.add(new Person3(8, "杨智", "c入门指南", 10));
set.add(new Person3(3, "刘晓红", "android入门指南", 10));
//System.out.println(set);
for (Person3 person3 : set) {
System.out.println(person3);
}
}
}
package homework;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
public class Person3imp implements Comparator<Person3>{
@Override
public int compare(Person3 o1, Person3 o2) {
if(o1.age>o2.age){
return 1;
}else if(o2.age>o1.age){
return -1;
}else{
CollationKey key = Collator.getInstance().getCollationKey(o1.name);
CollationKey key2 = Collator.getInstance().getCollationKey(o2.name);
if(key.compareTo(key2)>0){
return 1;
}else if(key2.compareTo(key)>0){
return -1;
}
else{
if(o1.bookprice>o2.bookprice){
return -1;
}else if(o2.bookprice>o1.bookprice){
return 1;
}
else{
CollationKey key3 = Collator.getInstance().getCollationKey(o1.bookname);
CollationKey key4 = Collator.getInstance().getCollationKey(o2.bookname);
return key3.compareTo(key4);
}
}
}
}
}
package homework;
public class Person3 {
int age;
String name;
String bookname;
int bookprice;
public Person3(int age, String name, String bookname, int bookprice) {
super();
this.age = age;
this.name = name;
this.bookname = bookname;
this.bookprice = bookprice;
}
@Override
public String toString() {
return "Person2 [age=" + age + ", bookname=" + bookname
+ ", bookprice=" + bookprice + ", name=" + name + "]";
}
}