所以意思是在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);
思想上感觉有点儿像操作系统中的快表和页表似的,先快表,没命中,再页表,同时加至快表。
个人感觉可能是因为性能上的原因,实际使用中数据可能很多,直接都放到map中,那这份数据站了list,map两份容量,真正的热点数据可能只是一部分,各有各的用处应该按实际情况来确定怎么用。
你把list想象成存了100万的数据库,map是不是就快多了?
score = findInList(name);
这一行里都已经遍历list找到了,为什么还要放进map里再去取出来?有点不理解
看出来了, 因为要多次对同一个实例调用 getScore() 方法,如果之前查询到过同样的key就可以加速。
Sign in to make a reply
丑得惊动中南海
所以意思是在Map里找,如果没有,就从List里找,然后再放入Map,以提高再次查找时的效率?既然这样为什么不直接用Map,要先使用List呢?没懂。
难道是因为List可以直接List.of()放入所有Student,而Map中name与score的映射关系需要一个个添加,如果遍历List中的Student,把name与score的映射关系一一添加到Map中,这样的效率比较低?