乐趣区

关于java:LinkedListSet接口HashSet类

一、LindedList


LinkedList 底层数据结构是链表,所以有针对头节点和尾节点操作的办法。

二、Set 接口


办法与 Collection 一样

不蕴含反复元素
没有带索引的办法,不能用 *** 一般 for*** 遍历

2.1 案例:存储字符串并遍历

创建对象:
Set 是接口

须要用实现类 HashSet()来创立

Set<String> s = new HashSet<String>();
HashSet()不对存储程序保障

Set()不蕴含反复元素


2.2 哈希值

同一个对象的 hash 值一样
默认状况下,不同对象的 hash 值不同。

(如果在类里重写了 hashCode(),能够实现不同对象的哈希值雷同

三、HashSet()类

public class HashSet() implements Set

  • HashSet 汇合实现了 Set 接口,底层是哈希表
  • 无序,存入和取出的程序不能保障统一
  • 没有索引办法,不能一般 for 遍历,然而能够 Iterator 和 加强 for 遍历
  • 和 Set 一样不蕴含反复元素

    四、HashSet 如何保障无反复元素


    五、哈希表

    是一种数据结构
    JDK8 之前底层是数组 + 链表
    JDK8 之后长度过长时进行了优化

    首先计算存入字符串的哈希值,HashSet()无参构造方法默认长度是 16,而后将哈希值对 16 取余,按余数存储。
    余数雷同,看哈希值是否雷同,哈希值雷同看内容是否雷同,这里雷同就不存进去。

退出移动版