计数数组

时间:2016-07-10 17:10:00

标签: java arrays

如何计算数组中的0,1,2的数字。  我有一个数组int [] A= {0,0,0,0,1,1,2,2,2},我怎么能用java来计算数字0,1和2。

我只知道下面的代码用于计算数组中的元素:

投票结束 迭代它并计算非空的元素:

    int counter = 0;
     for (int i = 0; i < A.length; i ++)
         if (A[i] != null)
         counter ++; 

/////////////////////////////////////////////// ////////////////////////////////

     int  idx [] = { 1,1,1,1,1,0,0,0,0,0,0,2,2,2};

     int[] count_x1 =new int[X]; //x==3. for example 
            for (int j : idx){
                   count_x1[j]++;
                      }

我更新代码仍有错误:(

5 个答案:

答案 0 :(得分:1)

int [] A = {0,0,0,0,1,1,2,2,2}是一个数组,你可以使用一个集合并调用方法Collections.frequency

实施例

int[] A = { 0, 0, 0, 0, 1, 1, 2, 2, 2 };
List<Integer> l = new ArrayList<>();
for (int i : A) {
    l.add(i);
}
System.out.println(Collections.frequency(l, 0));
System.out.println(Collections.frequency(l, 1));
System.out.println(Collections.frequency(l, 2));

答案 1 :(得分:0)

首先,您需要一个大小为3的辅助数组来跟踪每个数字0,1,2出现在输入数组中的次数。

然后迭代输入数组并将与您遇到的数字对应的辅助数组单元格增加1。

见下面的代码

Integer[] numToSearch = { 0,1,2 };
Integer[] helper = new Integer[3];
for (int i=0;i<3;i++)
    helper[i] = 0;
for (int i = 0; i < A.length; i ++)
     if (A[i] == numToSearch[0])
         helper[0]++;
     if (A[i] == numToSearch[1])
         helper[1]++
     if (A[i] == numToSearch[2])
         helper[2]++;
for (int i=0;i<helper.length;i++)
     System.out.println("Number of " + numToSearch[i] + "s in array: "+helper[i]);

答案 2 :(得分:0)

假设您只继续值(0,1,2,3 ....)

int[] A = {0, 0, 0, 0, 1, 1, 1, 2, 2, 2}; // any number and values will work!

int max = IntStream.of(A).max().getAsInt(); // gets max value in array
int[] counter = new int[max + 1]; 
for (int i = 0; i < A.length; ++i)
    counter[A[i]]++;

答案 3 :(得分:0)

你到底想要改变什么? if语句或整个代码块?我个人会使用开关/盒子来替换if检查,只要你知道你的阵列只有0,1和2。如果你也知道你的数组是有序的,你可以只计算数组中元素的数量,直到元素发生变化。

答案 4 :(得分:0)

如果你想要的是在一个int数组中计算任意值,你可以使用它:

Map<Integer, Integer> counter = new HashMap<>();

int [] A= {0,0,0,0,1,1,2,2,2};

for (int i : A) {
  Integer currentCount = counter.get(i);
  counter.put(i, (currentCount == null) ? 1 : currentCount + 1);
}

for (Integer i : counter.keySet())
   System.out.println(i + ": " + counter.get(i));