int []中项目的频率,而不是List <integer>?</integer>

时间:2012-04-12 04:36:55

标签: java

我正在试图弄清楚如何获取列表中项目的频率。当我接近这个问题时,我通常在过去做过:

int occurrences = Collections.frequency(list, 0);

当我的列表是List<Integer> list时,它可以正常工作。如果我使用int[] list,有没有办法做到这一点?当我尝试收集时,我的列表被转换,然后我的代码中断了。如果需要,我可以转换我的代码,但是想知道,如果有办法从int []获得频率。

4 个答案:

答案 0 :(得分:2)

您可以(1)编写自己的线性时间frequency方法,或(2)转换为boxed int类型的数组,并将Arrays.asListCollections.frequency一起使用。

int[] arr = {1, 2, 3};
Integer[] boxedArr = new Integer[arr.length];
for(int i = 0; i < arr.length; i++)
    boxedArr[i] = arr[i];
System.out.println(Collections.frequency(Arrays.asList(boxedArr), 1));

答案 1 :(得分:2)

您可以从List创建int[],但除此之外,您只需自己编写。

int[] l = //your data;
List<Integer> list = new List<Integer>();
for(int i : l)
  list.add(i);

int o = Collections.frequency(list, 0);

Arrays.asList(l);缩短时间。

答案 2 :(得分:2)

int occurrences = Collections.frequency(Arrays.asList(list), 0);

或者如果您反对将其转换为列表:

int occurrences = 0;
for (int i = 0; i < list.length; i++)
{
    if(list[i] == X) // X being your number to check
        occurrences++;
}

答案 3 :(得分:1)

你也可以这样做。

List<Integer> intList = Arrays.asList(new Integer [] {
      2, 3, 4, 5, 6,
      2, 3, 4, 5,
      2, 3, 4,
      2, 3,
      2
    });

  System.out.println(" count " + Collections.frequency(intList, 6));