实现类
HashSet:
底层用哈希表实现
不保证Set的迭代顺序:特别是不保证顺序的恒久不变,此类允许使用null
不能放重复值
Treeset:
底层用二叉树算法实现
可排序
不能放重复值
自定义的类想排序,令该类implements Comparable
重写public int compareTo(Object o),在这个方法内写比较方法
该比较规则只有一种,实现多种比较规则应自定义比较器
自定义比较器:
1. 写一个MyCompare类
在其中重写compare方法
2. 在new TreeSet对象时上面写的比较器类对象当构造方法参数传递进去
// Set set = new TreeSet(new Mycompare())
private static void t2() {
Set set = new TreeSet();
set.add(3);
set.add(0);
set.add(2);
set.add(1);
System.out.println(set);
}
private static void t1() {
Set set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
System.out.println(set);
}
自定义比较器:
public class MyCompare implements Comparator{
@Override
public int compare(Object o1, Object o2) {
if(o1==o2)
return 0;
if(o1==null || o2==null)
return -1;
Person p1 = (Person)o1;
Person p2 = (Person)o2;
//按age比较
//return (new Integer(p1.getAge())).compareTo(p2.getAge());
//按name比
return p1.getName().compareTo(p2.getName());
}
}