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的负数差值。

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

     

  • 相关阅读:
    java-this使用
    java-javaBean
    java 构造器
    refs之新旧差异
    angular学习-01引导加载
    mongo 学习02- 基本指令
    mongo 学习01- mongo安装与配置
    node-学习之路04 流式文件
    Vue nodejs商城项目-搭建express框架环境
    Vue nodejs商城项目-项目概述
  • 原文地址:https://www.cnblogs.com/cckong/p/14437169.html
Copyright © 2011-2022 走看看