10
回答
hashMap 能够处理100W条数据吗?如果能如何处理.
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

面试被问到这个问题,直接懵逼了,都不懂,求大神解答

hashMap 能够处理100W条数据吗?如果能如何处理.

举报
共有10个答案 最后回答: 1年前

能不能处理要看具体软硬件的。如果不考虑具体实现,仅仅从数据结构上说,这个集合无限大。别说100W,100W亿也无所谓。但是具体到具体机器上,你不能指望一个8位单片机的C语言建立一个大Map,内存和寻址空间都无法满足要求。

100W条数据是无法处理的,可以考虑使用HBase(其底层也是分离链表的实现方式)
--- 共有 9 条评论 ---
乌龟壳回复 @混元归一 : Hashmap和数据本身有多大无关,存的是内存地址 1年前 回复
温安适回复 @熊手拉猫手 : 确实是我算错了,但是生产中那个数据会是10B呢?我常用的数据都会比这个多 1年前 回复
熊手拉猫手回复 @混元归一 : 100W = 1M ,每条记录10个字节也就 10M 1年前 回复
温安适回复 @魔力猫 : 个人认为是解决方案之一,本质是上缓存 1年前 回复
魔力猫上BigMemory怎么样?350G缓存空间哦,多少个100W也塞进去了吧。 1年前 回复

 static final int MAXIMUM_CAPACITY = 1 << 30;

理论上是足够的,可以塞1073741824条数据,但具体要看你value的大小,如果只是些数字啊短字符串啊什么的,对JVM毫无压力

long time=System.currentTimeMillis();
Map<Integer, Integer> tranParam = new HashMap<Integer, Integer>();
Random random=new Random();
for (int i = 0; i < 1000000; i++ ) {
     tranParam.put(i, random.nextInt());
}
System.out.println(System.currentTimeMillis()-time);

比如上面的那种,一秒都不到

这个问题的答案是具体问题具体分析。说白了,面试官考的是你知道不知道这个问题需要考虑哪些条件。你面的是 架构师?或者高程?
hashmap的内部是一个数组和链表实现的,如果一个map里面存储100w条数据,要从各个方面考虑,首先从jvm的堆内存考虑,能不能存这么大的对象,说不定直接就内存溢出了。但不考虑这些严格意义上说hashmap是可以存那么多数据的,其实100w条数据也要看是什么样的数据,如果面试者问你的问题你实在不清楚你可以说不知道,他后面叫你问他的时候你可以反问他,其实很多问题面试者问的也很缺乏水准。比如我曾经遇到面试者,问Java的函数里面可以使用static申明变量不,我说好像不能,但面试者却觉得可以,我回家试了一下也确实不可以,所以有些面试官还是有点那个啥的。
顶部