如何在没有循环的情况下计算数组中的no?

时间:2016-11-27 11:35:01

标签: java

假设我们有一个10元素数组a[] = {2, 3, 4, 5, 3, 2, 3, 3, 3, 2};,如果必须检查特定元素的出现次数,请说3。然后,我将如何计算无循环?因为元素的数量可能很多。我的问题是:有没有找到它的Java方法

2 个答案:

答案 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);