1.Set
无序(存入取出顺序可能不一致),不可重复
底层由map实现
2.Set的实现类
1) HashSet
内部数据结构是哈希表,不同步。
2) TreeSet
内部数据结构是二叉树,TreeSet可以对Set集合中的元素进行排序。
3.HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。
Hashset底层是由hashmap实现的,操作的是hashmap中的key
无序,不可重复(根据hashcode和equals方法判定)
4.常用方法:
- TreeSet
TreeSet底层是由TreeMap实现的,我们操作的是TreeMap中的key
Tree的应用场合:去重,既要快速检索又要排序的情况。
缺点:存的时候需要比较大小,消耗资源和时间。 - Collections类
集合工具类,定义了许多算法,这些算法封装为不同的静态方法
List排序:
① Collections.sort(list)
要求list内存储的对象需要有可比较的能力,实现Comparable接口
② Collections.sort(list,new Comparator(){//按照比较器定义的排序规则进行排序
@Override
public int compare(Cat o1, Cat o2) {
return o1.getAge()-o2.getAge();
}
})
③ list.sort(comparator)
list1.sort(new Comparator() {
@Override
public int compare(Cat o1, Cat o2) {
return 0;
}
});
7.总结
①如果需要统计次数,选map,如果需要按照顺序输出,就选TreeMap,否则选HashMap。TreeMap在存数据的时候需要先进行比较再确定存储的位置,效率低
②如果需要去重可以选择用set hashset:hashcode()和equals()方法判断是否重复
Treeset:根据重写的排序规则进行排序,当返回为0的时候表示重复,不能存入
③如果没有特殊说明,一般就可以选择arraylist