|--Set:无序,不可以重复元素。
|--HashSet:数据结构式哈希表,线程时非同步的。
保证元素唯一性的原理:判断元素的hashCode值是否相同。
如果相同,还会继续判断元素的equals方法,是否为true。
|--TreeSet:可以对set集合中的元素进行排序。 底层数据结构是二叉树。
保证元素唯一性的依据:compareTo方法return 0.
TreeSet排序的第一种方式:让元素自身具备比较法。
元素需要实现Comparable接口,覆盖 compareTo方法,让元素有自然顺序,也叫默认顺序。
需求:在TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
重点:排序时,当主要条件相同时,一定判断一下次要条件。
|--HashSet:数据结构式哈希表,线程时非同步的。
保证元素唯一性的原理:判断元素的hashCode值是否相同。
如果相同,还会继续判断元素的equals方法,是否为true。
|--TreeSet:可以对set集合中的元素进行排序。 底层数据结构是二叉树。
保证元素唯一性的依据:compareTo方法return 0.
TreeSet排序的第一种方式:让元素自身具备比较法。
元素需要实现Comparable接口,覆盖 compareTo方法,让元素有自然顺序,也叫默认顺序。
需求:在TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
重点:排序时,当主要条件相同时,一定判断一下次要条件。
代码:
import java.util.*;
public class code
{
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add(new Student("wangwu01", 21));
ts.add(new Student("wangwu04", 23));
ts.add(new Student("wangwu02", 24));
ts.add(new Student("wangwu03", 22));
ts.add(new Student("wangwu003", 22));
Iterator it = ts.iterator();
while(it.hasNext()) {
Student s = (Student)it.next();
sop(s.getName()+"--"+s.getAge());
}
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Object obj) {
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");
Student s = (Student)obj;
if(this.age>s.age)
return 1;
if(this.age==s.age)
return this.name.compareTo(s.name);
return -1;
}
}