zoukankan      html  css  js  c++  java
  • Java常用类库(三) : HashSet和LinkedList特点简析

    今天内容:

    l  浅撩HashSet集合元素不可重复的原理

    l  使用LinkedList模拟栈和队列


    1.浅撩HashSet集合元素不可重复的原理

    我们知道HashSet是添加不了相同的元素的,其原理是hashSet在添加元素时,底层实现会调用到元素的HashCode方法进行。

    图1:调用hashcode方法

    我们在写Javabean时一般会重写hashCode和equals方法;可能说自动生成更合适一些。

    图2:Javabean生成的hashCode方法

    由图可以看到,生成的hashCode方法返回了以Javabean属性为参数的Objects的hash方法。

    图3:Objects的hash方法

    而Objects的hash方法又返回了Arrays的hashCode方法。

    图4:Arrays的hashCode 方法

    可以看到,这里返回的result与JavaBean的每一个属性都有关(JavaBean的每一个属性都又调用了本身的HashCode方法.因此我们在写Javabean时千万不要忘记生成HashCode方法!

    2.LinkedList可以当做底层来模拟队列和栈

    我们之所以可以使用LinkedList来模拟队列和栈是因为LinkedList采用的是链表的结构,通过其已有方法就很好的实现队列”先进先出”和栈的”先进后出的”特点。

    图5:队列模拟类

    图6:队列测试

    图7:栈模拟类

    图8:栈测试

     

    关注微信公众号,随时随地学习

     

  • 相关阅读:
    cors解决跨域
    神经网络和keras
    tensorflow笔记
    5.聚类算法-kmeans
    4.回归类算法-目标值连续型
    3.分类算法-目标值离散型
    Phaser.js开发小游戏之洋葱头摘星星
    VS Code 插件之 vscode-debug-visualizer
    Phaser.js开发小游戏之Phaser.js介绍
    微信小程序中写threejs系列之 threejs-miniprogram
  • 原文地址:https://www.cnblogs.com/dintalk/p/10880329.html
Copyright © 2011-2022 走看看