集合:Set,treeSet,HashSet

Set

无序的,不可重复的|去重

无序:存放数据的顺序与内部真实存储的顺序不一致

去重:如果有重复的数据,那么只能输出一个

集合不包含元素对e1和e2 ,使得e1.equals(e2)和最多一个null元素。

新增功能: static Set of(E... elements) 返回包含任意数量元素的不可修改集。

遍历方式:

    foreach

    iterator迭代器

TreeSet:

底层结构:红黑树

特点:查询效率较高,自动把数据做生序排序

底层是由TreeMap维护的

新增功能:新增一些与比较大小相关的方法

遍历方式:

For  each

Iterator迭代器

注意 : TreeSet需要存储相同类型的数据,因为会默认存在比较排

常用类:

E ceiling(E e) 返回此set中大于或等于给定元素的 null元素,如果没有这样的元素,则 null 。

E floor(E e) 返回此set中小于或等于给定元素的最大元素,如果没有这样的元素,则 null 。

E first() 返回此集合中当前的第一个(最低)元素。

E last() 返回此集合中当前的最后一个(最高)元素。

E higher(E e) 返回此集合中的最小元素严格大于给定元素,如果没有这样的元素,则 null 。

E lower(E e) 返回此集合中的最大元素严格小于给定元素,如果没有这样的元素,则 null 。

E pollFirst() 检索并删除第一个(最低)元素,如果此组为空,则返回 null 。

E pollLast() 检索并删除最后一个(最高)元素,如果此集合为空,则返回 null 。

TreeSet存储javabean类型的数据:

去重与排序:

都是根据比较规则实现的,与equals没有关系

比较规则:

内部比较器|内部比较规则|自然顺序:

比较规则定义在javabean类型的内部

javabean类型实现Comparable接口,重写compareTo(T o)方法,在方法中定义比较规则

外部比较器|外部比较规则|定制排序 :

比较规则定义在javabean类型的外部

定义一个实现类,实现Comparator接口,重写int compare(T o1, T o2),在方法中定义比较规则

 Arrays.sort(数组) 默认升序排序

匿名内部类 : 简化没有类自己作用的实现类

Lambda : 简化匿名内部类对象,要求必须为函数式接口才能简化

lambda表达式作为实参传递 -> 可以把行为作为参数传递

注意: TreeSet去重,排序,都根据比较规则实现 如果指定外部比较规则,使用外部比较规则,没有指定外部,使用内部比较规则,都不在,抛出类型转换异常ClassCastException

HashSet:

List  有序,可重复

Set  无序,不可重复

TreeSet:默认圣墟排序

HashSet:

底层结构:哈希表(数组+链表+红黑树)

特点:查询,增删效率高,去重,无序

应用场景: 适合用在去重,无序,增删查效率较高情况

底层是由HashMap维护的

遍历:for  each      iterator迭代器

此类允许null元素。

请注意,此实现不同步。

存储Javabean类型数据实现去重: 需要Javabean类型重写hashcode与equals方法,需要根据对象的属性值进行计算|判断,不能根据对象地址

思考: 重写hashcode与equals以后 两个对象hashcode相等,equals就一定相等? 不一定 两个对象equals相等,hashcode一定相等? 一定

 System.out.println(new Integer(105).hashCode());//如果是整数那么hasgCode的返回值就是整数本身

你可能感兴趣的:(java)