关于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取余,按余数存储。
    余数雷同,看哈希值是否雷同,哈希值雷同看内容是否雷同,这里雷同就不存进去。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理