关于这个是在一个博客上看到的,就像试一下,测试结果出人意料。
看到这个标题可能还是觉得有点抽象,那么首先来一段代码:
int count = map.containsKey(string) ? map.get(string) : 0;
map.put(string, count + 1);
其中contains(),get() and put()方法都要在map中根据key查找,需要朝找三次,那么在优化过后只需要查找一次。
以上这段代码以及稍后的优化思路来自:http://blog.pengyifan.com/most-efficient-way-to-increment-a-map-value-in-java-only-search-the-key-once/
这是干什么用的,那么在直接看下面的一个应用就很清楚了,代码如下:
/**
* 给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次
* 优点:时间复杂度为O(n)
* 缺点:暂时没发现
*/
public static void method2(){
int[] datas = {5,2,3,2,4,5,1,2,1,5};
Map<Integer,Integer> map = new HashMap<Integer, Integer>();
for (int i