通过自身元素进行排序
public class Text10 implements Comparable<Text10> {
/*map*/
/*treemap*/
//通过自身元素进行排序
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Text10() {
}
public Text10(String name, Integer age) {
this.name = name;
this.age = age;
}
//重写tostring方法
@Override
public String toString() {
return "Text10{"+"name'"+ name +"\'"+",age="+age+"}";
}
//重写compareTo方法
@Override
public int compareTo(Text10 o) {
if (this.age>o.getAge()) { //根据< 或者 > 来决定排序方式,比如从小到大呕
return 1;
}
if (this.age == o.getAge()) {
return this.name.compareTo(o.getName());
}
return -1;
}
public static void main(String[] args) {
Map<Text10, String> aa = new TreeMap<>();
Text10 d1 = new Text10("yang", 18);
Text10 d2 = new Text10("jing", 20);
Text10 d3 = new Text10("da", 20);
aa.put(d1,"第一个");
aa.put(d2,"第二个");
aa.put(d3,"第三个");
System.out.println(aa);
//{Text10{name'yang',age=18}=第一个, Text10{name'da',age=20}=第三个, Text10{name'jing',age=20}=第二个}
Set<Text10> i = aa.keySet();
for (Text10 y : i) {
System.out.println("key "+y+" value "+aa.get(y));
//key Text10{name'yang',age=18} value 第一个
//key Text10{name'da',age=20} value 第三个
//key Text10{name'jing',age=20} value 第二个
}
}
}
通过比较器实现排序
public class Text11 {
/*通过比较器实现排序*/
private String name;
private Integer age;
public Text11() {
}
public Text11(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
//重写tostring方法
@Override
public String toString() {
return "Text11{"+"name'"+ name +"\'"+",age="+age+"}";
}
public static class Compartor2 implements Comparator<Text11> {
/*重写compare()方法,注意:不是compareTo()方法*/
@Override
public int compare(Text11 o1, Text11 o2) {
if (o1.getAge()>o2.getAge()) {
//是否可以使用integer包装类的comparable接口中的compareTo()方法进行比较
return 1;
}
if (o1.getAge()==o2.getAge()) {
o1.getName().compareTo(o2.getName());
}
return -1;
}
}
public static void main(String[] args) {
Map<Text11, String> aa = new TreeMap<>(new Compartor2());
Text11 d1 = new Text11("yang", 18);
Text11 d2 = new Text11("jing", 20);
Text11 d3 = new Text11("da", 20);
aa.put(d1,"第一个");
aa.put(d2,"第二个");
aa.put(d3,"第三个");
System.out.println(aa);
//{Text11{name'yang',age=18}=第一个, Text11{name'da',age=20}=第三个, Text11{name'jing',age=20}=第二个}
Set<Text11> i = aa.keySet();
for (Text11 y : i) {
System.out.println("key "+y+" value "+aa.get(y));
//key Text11{name'yang',age=18} value null
//key Text11{name'da',age=20} value null
//key Text11{name'jing',age=20} value null
}
Map<Text10, String> bb = new TreeMap<>();
Text10 text10 = new Text10("yang", 18);
Text10 text101 = new Text10("jing", 20);
Text10 text102 = new Text10("da", 20);
bb.put(text10,"第一个");
bb.put(text101,"第二个");
bb.put(text102,"第三个");
System.out.println(bb);
//{Text10{name'yang',age=18}=第一个, Text10{name'da',age=20}=第三个, Text10{name'jing',age=20}=第二个}
Set<Text10> keySet = bb.keySet();
for (Text10 y : keySet) {
System.out.println("key "+y+" value "+bb.get(y));
//key Text11{name'yang',age=18} value 第一个
//key Text11{name'da',age=20} value 第三个
//key Text11{name'jing',age=20} value 第二个
}
}
}