美文网首页
五.Set接口

五.Set接口

作者: Movle | 来源:发表于2020-11-10 09:06 被阅读0次

    1.通用

    (1)Set接口的特点

    • 不允许存储重复元素
    • 没有索引,没有带索引的方法,也不能使用普通for循环遍历

    2.HashSet

    (1)HashSet特点

    • 不允许存储重复的元素
    • 没有索引,没有带索引的方法,也不能使用普通的for循环遍历
    • 是一个无序的集合,存储元素的取出元素的顺序有可能不一样
    • 底层是一个哈希表结构(查询的速度非常快)

    (2)HashSet存储自定义类型元素

    • Set集合要保证元素唯一(String,Integer...Student,Person),必须重写hashCode方法和equals方法

    3.哈希值

    (1) 是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到的地址,不是数据实际存储的物理地址)
    (2)int hashCode() 返回该对象的哈希码值

    4.Hash表(HashSet集合存储数据的结构)

    (1)jdk8之前:

    • 哈希表=数组+链表

    (2)jdk8之后:

    • 哈希表=数组+链表
    • 哈希表-数组+红黑树(提高查询的速度)

    (3)哈希表的特点

    • 速度快

    5.LinkedHashSet

    (1)LinkedHashSet 继承自 HashSet
    (2)LinkedHashSet集合特点:

    • 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序
    • 并且不允许重复

    6.可变参数

    (1)可变参数:是JDK1.5之后出现的新特性
    (2)使用前提:

    • 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数

    (3)使用格式:定义方法时使用

    修饰符 返回值类型 方法名(数据类型...变量名){}
    

    (4)可变参数原理:

    • 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,用来存储这些参数
    • 传递的参数个数,可以是0(不传递),1,2...多个

    (5)示例

    public static int sum(int...arr){
        int sum = 0;
        for(int i:arr){
            sum+=i;
        }
        return sum;
    }
    

    (6)可变参数的注意事项

    • 一个方法的参数列表,只能有一个可变参数
    • 如果方法的参数有多个,那么可变参数必须写在参数列表的末尾
    public static int sum(String a,Double b,int...arr){
        int sum = 0;
        for(int i:arr){
            sum+=i;
        }
        return sum;
    }
    

    (7)可变参数的特殊写法

    public static void method(Object...obj){
    
    }
    

    相关文章

      网友评论

          本文标题:五.Set接口

          本文链接:https://www.haomeiwen.com/subject/lqecbktx.html