这是一篇TreeSet去重原理文章,小白刚刚入门多多指教:
TreeSet是集合Collection下的一个实现类,可以通过集合,来存储元素,Collection集合中的元素大概分为两类:Set集合和List集合,Set集合之中,又可以提取出两个,具有代表性的:HashSet和TreeSet,HashSet存取无序、数值无索引、不可重复,TreeSet和HashSet一样,都是存取无序、无索引、不可重复,但是TreeSet可以排序,我们重点来讲一讲:TreeSet的排序。
新建一个类,实现接口的实现类
重写equals和hashCode方法,这个接口提供了一个方法compareTo(Object i)
方法,重写之后,可以按照返回的值对存入TreeSet的元素进行排序。其中,返回值int,代表排序方法:如果int>0,则按照元素对象升序排序,如果int<0,则按照元素对象降序排序。如果int=零,则表示两个元素相同,就进行去重的工作。但是,这个方法是我们自己写的,除了按系统规定好的(或者说,设置好的)排序方法之外,我们还能够进行其他排序。
具体如下:
import java.util.Objects;
public class huluBaoBao implements Comparable<huluBaoBao> {
private int sid;
private String fuluName;
private String color;
private em wood;
enum em {一楼的,二楼的,三楼的,四楼的,五楼的,六楼的,七楼的
}
@Override
public int compareTo(huluBaoBao o) {
int num=this.getEnum(this.wood)-o.getEnum(o.wood);
int num2=this.sid-o.sid;
return num == 0 ? num2 : num;
}
public int getEnum(em string){
int i=0;
switch (string){
case 一楼的: i=1;break;
case 二楼的: i=2;break;
case 三楼的: i=3;break;
case 四楼的: i=4;break;
case 五楼的: i=5;break;
case 六楼的: i=6;break;
case 七楼的: i=7;break;}
return i; }
//最主要用到上面的方法
//===========================分割线=======================================
……
这是我们自己定义的一个,排序方法, 如果“楼层”(枚举)重复,就比较sid,再根据id排序:在方法中,num == 0 ? num2 : num;就实现了这样的一个切换。
按照自定义的顺序,排的序