1.Set接口特点

  • 不允许存储重复元素
  • 没有索引,没有带索引的方法,不能使用普通的for循环,只能使用增强for或迭代器

2.HashSet集合特点

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

例:

  import java.util.HashSet;
  import java.util.Iterator;
  import java.util.Set;

  public class HashSetList {
    public static void main(String[] args) {
        Set <String> list = new HashSet<>();
        list.add("姚明");
        list.add("乔丹");
        list.add("詹姆斯");
        list.add("姚明");

        Iterator<String> it = list.iterator();
        while (it.hasNext())
        {
            String s = it.next();
            System.out.println(s);
        }

        System.out.println("------------------------------");

        for (String s : list) {
            System.out.println(s);
        }
    }
  }

3.哈希值

一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到的地址,不是数据实际储存的物理地址)
int hashCode() 返回对象的哈希码值
两个元素不同,但哈希值相同,叫做哈希冲突
存储自定义类型元素时,需要重写equals(),hashCode()方法

4.LinkedHashSet集合

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

5.可变参数

使用前提:当方法的参数列表的数据类型已经确定,但是参数的个数不确定,就可以使用可变参数
使用格式:修饰符 返回值类型 方法名(数据类型...变量名){}
底层原理:底层就是一个数组,根据传递参数的不同,会创建不同长度的数组,来存储这些参数,传递的参数个数,可以是0,1,2...个
例:

  public class Sum {
    public static void main(String[] args) {
        add(10,20);
        add(10,20,322,43,12,332,4442,123422);
    }

    private static void add(int...arr) {
        int num = 0;
        for (int i = 0; i < arr.length; i++) {
            num+=arr[i];
        }
        System.out.println(num);
    }
  }
Last modification:May 29th, 2020 at 01:49 pm
如果觉得我的文章对你有用,请随意赞赏