有时需要从集合中提取一些信息。
但是最有效的做法是什么?
可读性>性能
如果必须分别对集合进行迭代以获取任何信息,那么我们将有n次循环,从而影响性能。另一方面,由于易于读取从集合中提取的信息,因此这些方法易于理解。
简单示例:
int max = determineMax(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7)));
int sum = calculateSum(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7)));
...
private int determineMax(ArrayList<Integer> integers) {
int max = 0;
for (Integer oneInteger : integers) {
max = Math.max(max, oneInteger);
}
return max;
}
private int calculateSum(ArrayList<Integer> integers) {
int sum = 0;
for (Integer oneInteger : integers) {
sum += oneInteger;
}
return sum;
}
性能>可读性
其他解决方法是循环一次,但随后需要返回许多变量。对于这种方法,我们需要使用数组或为返回值创建一个人工类。
简单示例:
int[] extractedInformation = extractInformation(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7)));
...
private int[] extractInformation(ArrayList<Integer> integers) {
int sum = 0;
int max = 0;
for (Integer oneInteger : integers) {
sum += oneInteger;
max = Math.max(max, oneInteger);
}
return new int[]{sum, max};
}
您可能渴望获得性能,但在现实世界中,项目如此之大,您不仅是从事此工作的人。