【发布时间】:2019-03-10 00:43:31
【问题描述】:
我有一个HashMap,它将Integer 作为键,将整数数组作为值,HashMap<Integer, Integer[]>()。
所以我每次在另一个数组上循环时都试图获取最大值(数组大小),例如:
long startTime = System.currentTimeMillis();
result[i] = map.entrySet().stream().mapToInt(element -> element.getValue().size()).max().getAsInt() + 1;
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println( totalTime);
在我在不同的输入上多次运行这个程序后,我总是在第一次得到高延迟,例如:
29 // <- First time
0
0
0
0
0
使用循环:
long startTime = System.currentTimeMillis();
for (Map.Entry<Integer, List<Integer>> element: map.entrySet()) {
result[i] = result[i] < element.getValue().size() ? element.getValue().size() : result[i];
}
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println( " " + totalTime);
输出:
0
0
0
0
0
0
当然这是大输入的大问题,那么这里出了什么问题?
【问题讨论】:
-
我不明白为什么它与另一个问题重复。他不想做一个基准
-
你把你的代码放在一个for循环中了吗?你能粘贴你的完整代码吗?
-
@howie 我会把它放入for循环并发布结果;
-
你的第二个输出似乎是矛盾的!
-
@nullpointer 你是什么意思?
标签: java arrays java-stream