zoukankan      html  css  js  c++  java
  • 【大数据开发工程师】面试——JAVA题之HashSet

    HashSet

    作用:保证数据的唯一。

    public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
    {
      private transient HashMap<E,Object> map;//底层维护了一个HashMap实例
    }

    实现了Set接口,不允许出现重复元素。不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

    HashSet有序吗?

    HashSet不保证集合中元素的个数,但是特定情况下会出现有序的情况。也就是当写入到HashSet中的数据都是Integer,且小于65535时,HashSet有序。

    这是因为Integer类重写了hashcode,所以Integer的hashcode是其本身。

    public Integer(int value) {
    this.value = value;
    }
    @Override
    public int hashCode() {
    return Integer.hashCode(value);
    }

    public static int hashCode(int value) {
    return value;
    }
    HashMap计算hash的公式是:
      (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16)



    以上可以得知,Iteger计算得到的hash值是其本身。

    HashSet怎么保证唯一性?

    HashSet底层维护了一个HashMap,HashMap的Key不能重复。

  • 相关阅读:
    pom.xml将jar包导入
    获取当前系统日期的前一天日期
    判断socket连接是否失效
    java读取数据,2,2,1方式读取
    笔记
    回调机制
    吧字符串按逗号分割为数组
    时间格式的转变
    java.net.SocketException四大异常解决方案
    log4j
  • 原文地址:https://www.cnblogs.com/lintong-zf/p/14230374.html
Copyright © 2011-2022 走看看