Java中Hashmap存不下那些数据怎么办(有一堆数据)?

突然想起前几天有人问的关于HashMap一个问题


假如hashmap中存入了大量的数据,存不下了怎么办呢!?好吧,当时我就惊呆了。hashmap还有内存溢出的情况简直是不能忍!次奥,但是左思右想总是想不出答案来。好吧,我承认又得补脑了
0_0。回来各种查资料。

整个分析流程如下:

  • Q1:什么是hashmap?
  • Q2:为什么会有hashmap存储不下数据的情况产生?
  • Q3:如何解决此情况?

什么是 HashMap?

首先让我们来了解下数组和链表:数组在寻址能力比较强大、但是插入&&删除能力较弱;链表在寻址能力较弱,但是插入删除能力比较强。那么有没有一种寻址容易,插入删除又容易的数据结构!答案就是有的!Hash表欢迎您!而HashMap又是Hash表的一种,线程不安全,但是性能较Hashtable高一些。所以HashMap与HashTable之间常用HashMap.

为什么会有HashMap存储不下数据的情况产生?

一般情况下不会出现这样的情况,除非这个数据真的非常多&&你做Key对象没有实现自己的HashCode算法,导致存储了好多冗余的数据。

怎么解决?

一般情况下应该对你做key的对象进行hashcode方法、equals方法的重写,然后定期清理不使用的强映射、或者使用WeekHashMap:会让GC定期清理不使用的数据,一般就不会出现这样的情况了。
当然有更狠的一招- -把JVM内存+++(这个不推荐,知道即可)

今天又学习了一点知识,与诸君共勉!