zoukankan      html  css  js  c++  java
  • Java集合Set及HashSet以及TreeSet

    1.set子接口

    特点“无下标、无序、不可重复。

    2.实现set

    set是一个接口 所以不能使用new Set

    new的时候需要使用到set的两个实现类 hashSet、TreeSet

    3.HashSet存储原理:

    利用Object类里面的hashcode方法计算hash值。

    如果hash值相等的话,在进行equals方法的调用,如果返回为true则不给予存入。

    (比如说你有一个celebrity类 就可以重写equals方法。比如存入两个  刘德华,20岁  看成一个人 不允许存入2个)

    (同时呢 我们根据存储步骤 先hashCode 再equals 。也可以重写hashCode方法)

    底层是哈希表(拉链法,也就是数组+链表)

    4.为什么要重写HashCode() equals()方法

    5.TreeSet

    基于红黑树实现

    如果要使用自定义的类 必须时间comparable接口(因为是有序的 所以必须能相互比较)

    (1)comparable接口是一个函数式接口 必须实现里面的compareTo方法(返回值为0 证明是重复元素)

    (2)或者在声明treeSet时,显式定义比较器Comparator

     默认比较器的原理是升序的,返回的是2个比较对象的ASCII码的差值。

    如果相等返回0 a比b大返回正数a-b的ASCII码差值 a比b小的话返回a-b的负数差值。

    (如果你要倒序的 可以将上面的正负返回值倒过来)

     

  • 相关阅读:
    C# 中的EventHandler
    Leetcode:Combinations 组合
    Leetcode:Minimum Path Sum
    [LeetCode] Container With Most Water
    一个数n的最少可以由多少个数的平方和组成
    单链表的归并排序
    几个常用的操作系统进程调度算法(转)
    字符串的最长重复子串(转)
    linux静态链接库与动态链接库详解
    简易的hashtable实现
  • 原文地址:https://www.cnblogs.com/cckong/p/14437169.html
Copyright © 2011-2022 走看看