Discuss / Java / 求解。

求解。

Topic source

所以意思是在Map里找,如果没有,就从List里找,然后再放入Map,以提高再次查找时的效率?既然这样为什么不直接用Map,要先使用List呢?没懂。

难道是因为List可以直接List.of()放入所有Student,而Map中name与score的映射关系需要一个个添加,如果遍历List中的Student,把name与score的映射关系一一添加到Map中,这样的效率比较低?

 // TODO:
score = findInList(name);
this.cache.put(name,score);

xian_wen

#2 Created at ... [Delete] [Delete and Lock User]

思想上感觉有点儿像操作系统中的快表和页表似的,先快表,没命中,再页表,同时加至快表。

个人感觉可能是因为性能上的原因,实际使用中数据可能很多,直接都放到map中,那这份数据站了list,map两份容量,真正的热点数据可能只是一部分,各有各的用处应该按实际情况来确定怎么用。

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

你把list想象成存了100万的数据库,map是不是就快多了?

imki911

#5 Created at ... [Delete] [Delete and Lock User]
score = findInList(name);

这一行里都已经遍历list找到了,为什么还要放进map里再去取出来?有点不理解

imki911

#6 Created at ... [Delete] [Delete and Lock User]

看出来了, 因为要多次对同一个实例调用 getScore() 方法,如果之前查询到过同样的key就可以加速。


  • 1

Reply