TreeSet在存放对象元素的时候就会排序。因此在存放完之后,对结合中的元素进行修改,那么修改也不会影响原先的排序。
如果存放进去的对象没有实现 Comparable接口就会抛出异常。
直接上代码:
public class MusicBoxTest02 {
public static void main(String[] args) {
MusicBox box1 = new MusicBox("郑和", "小提琴", 4.35);
MusicBox box2 = new MusicBox("郑和", "小提琴", 4.36);
MusicBox box3 = new MusicBox("周杰伦","蚂蚁搬家",4.36);
MusicBox box4 = new MusicBox("周杰伦","蚂蚁搬家",4.37);
Set<MusicBox> set = new TreeSet<>();
set.add(box1);
set.add(box2);
set.add(box3);
set.add(box4);
for(MusicBox ss:set){
System.out.println(ss);
}
}
}
public class MusicBox implements Comparable<MusicBox>{
// 歌手
private String person;
// 歌名
private String name;
// 大小
private double lenght;
public MusicBox() {
super();
}
public MusicBox(String person, String name, double lenght) {
super();
this.person = person;
this.name = name;
this.lenght = lenght;
}
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getLenght() {
return lenght;
}
public void setLenght(double lenght) {
this.lenght = lenght;
}
@Override
public String toString() {
return "MusicBox [person=" + person + ", name=" + name + ", lenght=" + lenght + "]";
}
@Override
public int compareTo(MusicBox o) {
// 根据 歌曲名称排序并去重
return o.getName().compareTo(this.getName());
}
}
结果是:
达到了排序去重的目的。
可以使用int类型排序效果更明显。