一般而言,数组最简单快捷的方法是直接利用HashSet的不重复的特性就可以做到,或者是遍历时利用List的contains 判断是否存在就可以去重了 如果是对象数组,对象的类需要 重写 equal 和 hashCode方法.。 但是面试题经常有数组去重的试题,如果在不使用hashSet 和 list ...
分类:
编程语言 时间:
2019-09-30 10:01:58
阅读次数:
86
设计模式 一、单例模式 1. 什么是单例模式? 单例模式,指的就是在整个软件系统的生命周期中,某个类的对象至始至终只有一个对象。 创建单例模式的方法有很多种,下面一一分析: 2. 饿汉式 3. 饿汉式(静态代码块) 4. 懒汉式(线程不安全) 5. 懒汉式(线程安全,同步方法) 6. 懒汉式(同步代 ...
分类:
其他好文 时间:
2019-09-28 23:17:07
阅读次数:
100
什么是 equals 和 hashcode 方法? 这要从 Object 类开始说起,我们知道 Object 类是 Java 的超类,每个类都直接或者间接的继承了 Object 类,在 Object 中提供了 8 个基本的方法,equals 方法和 hashcode 方法就是其中的两个。 equal ...
分类:
其他好文 时间:
2019-09-27 11:04:49
阅读次数:
89
①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法 ...
分类:
其他好文 时间:
2019-09-24 13:59:20
阅读次数:
92
转自:www.cnblogs.com/vipstone 下面一起来看 208 道面试题,具体的内容。 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.f ...
分类:
编程语言 时间:
2019-09-24 12:02:19
阅读次数:
91
HashMap底层是一个数组,通过允许冲突来实现大小可扩充。数组的下标是对象的散列码,存储的是list,查询list的时候是线性equals()比较(所以速度的瓶颈在于不能让list过长,也就是数据不能太集中)。 放入HashMap的对象要实现2个方法,hashCode()和equals()。 eq ...
分类:
编程语言 时间:
2019-09-24 10:20:16
阅读次数:
68
参考文章: hashCode 为什么乘以 31?深入理解 hashCode 和 hash 算法 https://www.jianshu.com/p/76c5215eda5c 为什么 String hashCode 方法选择数字31作为乘子 https://segmentfault.com/a/119 ...
分类:
其他好文 时间:
2019-09-21 01:28:37
阅读次数:
191
一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。 对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆 ...
分类:
编程语言 时间:
2019-09-19 14:29:05
阅读次数:
95
1.JDK 和 JRE 有什么区别? JRE是运行时环境 给需要运行Java程序的人使用 JDK是Java开发工具包 包含JRE 给开发人员使用 2.== 和 equals 的区别是什么? ==比较的是内存地址 equals比较的是值 3.两个对象的 hashCode()相同,则 equals()也 ...
分类:
编程语言 时间:
2019-09-19 12:13:59
阅读次数:
105
基本介绍 1. 用于存储Key Value键值对的集合(每一个键值对也叫做一个Entry)。 2. 根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值。 3. 键key为null的记录至多只允许一条,值value为null的记录可以有多条。 4. 非线程安全。 5. HashMap ...
分类:
其他好文 时间:
2019-09-16 21:19:59
阅读次数:
78