set中的hashSet和treeSet相关概念

 简而言之,带hashcode的数据集,都牺牲空间带有一个hash映射表,能进行快速的匹配查询。带tree的数据集可以认为是一棵有序的树形结构。

那么,hashcode结构不再具体详细说明。下来详细说下treeSet中的排序问题,分成自然排序,和自定义排序

  1.自然排序是让set内部的元素自身实现comparable接口,实现comparTo方法,使元素即具有可比性,可以区分先后,相同与否

   举例:

    

public class Grade implements Comparable<Grade>{//表示该类是定义重写了compareto方法是可以加入set中的,重复的祛除,保留有一定顺序的序列
	Integer  gradeId;
	String	gradeName;
	
	public Grade(Integer gradeId, String gradeName) {
		super();
		this.gradeId = gradeId;
		this.gradeName = gradeName;
	}
	
	@Override
	public String toString() {
		return "Grade [gradeId=" + gradeId + ", gradeName=" + gradeName + "]";
	}
	
	@Override
	public int compareTo(Grade o) {
		if(!this.gradeName.equals(o.gradeName)){
			return(this.gradeName.compareTo(o.gradeName)>0?1:-1);
		}else{
			return this.gradeId<o.gradeId?-1:(this.gradeId>o.gradeId?1:0);
		}
	}
}

  2.自定义排序,自定义一个比较器,实现comparator接口,实现了compare方法,而在新建set的时候,把比较器这个参数传入

 

Set setDemo=new Set(new Comparator());//自定义比较器

 

posted @ 2017-08-12 22:18  小飞vsKK  阅读(177)  评论(0)    收藏  举报