Java之Set、可变参数

时间:2024-05-31 11:32:42

一、java.util.Set

是Collection接口的子接口,特点:

  1. 不允许重复元素
  2. 不保证先后顺序
  3. 没有索引值

二、常用的实现类:

  1. HashSet:底层使用哈希表,查找对象的速度嗷嗷快。
  2. LinkedHashSet:底层也是哈希表,但是额外还有链表,用来维护先后顺序。
  3. TreeSet:有大小排序。

三、重点问题:

Set集合是如何确定有没有重复元素的?换言之,如何才能得知两个对象相同还是不同?
Java之Set、可变参数

Java之Set、可变参数
哈希值:int类型---------------------------->hashcode()<--------------地址值(16进制)
(并非Java代码获取)
地址值与int类型并非一一对应,地址值>>int型,所以可能有哈希冲突
首先计算出hash值,在%16,放到对应的桶中

四、大小比较方式:

(1)如果希望对集合当中的元素进行排序,但是排序的规则并不写死在类中,那么就可以使用方法:
public static void sort(List list, Comparator comp):第二个参数代表排序的规则。

(2)Comparable:用自定义的类自己去实现它。
口诀:升序就是我减他。 public int compareTo(T o)
(3)Comparator:自定义的类自己不用实现,而是作为第二个参数。
口诀:升序就是一减二。public int compare(T o1, To2)

五、可变参数:

可变参数其实是一个语法糖,原理:
(1)底层是一个数组。
(2)在传参时,可以是任意多个数据。
(3)一个方法中最多有一个可变参数。
(4)必须处于最后一个位置。