我正在试图弄清楚如何获取列表中项目的频率。当我接近这个问题时,我通常在过去做过:
int occurrences = Collections.frequency(list, 0);
当我的列表是List<Integer> list
时,它可以正常工作。如果我使用int[] list
,有没有办法做到这一点?当我尝试收集时,我的列表被转换,然后我的代码中断了。如果需要,我可以转换我的代码,但是想知道,如果有办法从int []获得频率。
答案 0 :(得分:2)
您可以(1)编写自己的线性时间frequency
方法,或(2)转换为boxed int类型的数组,并将Arrays.asList
与Collections.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));