假设我们有一个10
元素数组a[] = {2, 3, 4, 5, 3, 2, 3, 3, 3, 2};
,如果必须检查特定元素的出现次数,请说3
。然后,我将如何计算无循环?因为元素的数量可能很多。我的问题是:有没有找到它的Java方法?
答案 0 :(得分:0)
没有写传统的for循环:
List<Integer> list = Arrays.asList(2, 3, 4, 5, 3, 2, 3, 3, 3, 2);
long occurences = list.stream().filter(n -> n == 3).count();
System.out.print(occurences);
答案 1 :(得分:0)
使用一个数组作为一个对象,你必须迭代元素才能知道每个元素,循环是不可避免的。
我的问题是:有没有找到它的Java方法?
是的,但您应该使用更适合您需要的结构,例如地图。
这个想法是使用Map初始化值和相关频率。通过这种方式,当您想知道整数值的频率时,您不再需要执行循环。
public Map<Integer,Integer> createWithElements(int... values) {
Map<Integer,Integer> nbOccurencesByValue = new HashMap<>();
for (int value : values){
Integer actualNbOccurence = nbOccurencesByValue.get(value);
if (actualNbOccurence==null){
actualNbOccurence=0;
}
nbOccurencesByValue.put(value, ++actualNbOccurence);
}
return nbOccurencesByValue;
}
如何使用它:
Map<Integer,Integer> nbOccurencesByValue = createWithElements(2, 3, 4, 5, 3, 2, 3, 3, 3, 2);
Integer nbOccurenceFor3Number = nbOccurencesByValue.get(3);