set
特点
1. Set是一个无序集合,既存入集合的顺序和取出的顺序不一致
2. Set集合中元素不重复
TreeSet
TreeSet是SortedSet的唯一实现类,保存的元素可以按照某种规则自动排序
数字:从小到大
日期:自然日期(昨天,今天,明天)
字符串:每一位的ASCII码值
public static void main(String[] args) throws ParseException {
SortedSet ss = new TreeSet();
ss.add(1);
ss.add(22);
ss.add(2);
System.out.println(ss);
ss = new TreeSet();
ss.add("abc");
ss.add("abd");
ss.add("ba");
ss.add("ac");
System.out.println(ss);
ss = new TreeSet();
String st1 = "2008-08-08";
String st2 = "2008-08-07";
String st3 = "2008-09-01";
String st4 = "2007-09-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = sdf.parse(st1);
Date d2 = sdf.parse(st2);
Date d3 = sdf.parse(st3);
Date d4 = sdf.parse(st4);
ss.add(d1);
ss.add(d2);
ss.add(d3);
ss.add(d4);
for(Object object:ss) {
Date date = (Date) object;
System.out.println(sdf.format(date));
}
}
为什么SortedSet集合存储的元素会进行排序?
因为 被存储的元素实现了Comparable
TreeSet在进行添加的元素的时候,会自动调用compareTo方法完成比较
所以如果我们自定义类型想要存储在TreeSet集合中的话,类必须实现Comparabe接口,并覆写compareTo方法
public class Collection_10_SortedSet_02 {
public static void main(String[] args) {
SortedSet users = new TreeSet();
users.add(new User(19));
users.add(new User(20));
users.add(new User(1));
users.add(new User(23));
System.out.println(users.size());
System.out.println(users);
}
}
class User implements Comparable{
int age;
public User(int age) {
super();
this.age = age;
}
public String toString() {
return "User [age=" + age +"]";
}
public int compareTo(Object o) {
if(!(o instanceof User)) {
return 0;
}
User u1 = (User)o;
return this.age - u1.age;
//返回0 说明集合中有这个元素,就不添加
//小于0 说明要添加的元素比集合中的元素小,往前放
//大于0 说明大,往后放
//return -1;
}
}