6

我过去使用过 Collections.frequency,它运行良好,但现在我使用 int [] 时遇到了问题。

基本上 Collections.frequency 需要一个数组,但我的数据是 int[] 的形式,所以我转换了我的列表但没有得到结果。我认为我的错误在于列表的转换,但不知道该怎么做。

这是我的问题的一个例子:

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

public class stackexample {
    public static void main(String[] args) {
        int[] data = new int[] { 5,0, 0, 1};
        int occurrences = Collections.frequency(Arrays.asList(data), 0);
        System.out.println("occurrences of zero is " + occurrences); //shows 0 but answer should be 2
    }
}

我没有得到零错误,但是当我尝试列出其中的项目时,我得到了奇怪的数据Arrays.asList(data),如果我只是直接添加数据,它想将我的列表转换为collections<?>

有什么建议么?

4

3 回答 3

12

这有效:

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class stackexample {
    public static void main(String[] args) {
        List<Integer> values = Arrays.asList( 5, 0, 0, 2 );
        int occurrences = Collections.frequency(values, 0);
        System.out.println("occurrences of zero is " + occurrences); //shows 0 but answer should be 2
    }
}

这是因为Arrays.asList没有给你你认为的:

http://mlangc.wordpress.com/2010/05/01/be-carefull-when-converting-java-arrays-to-lists/

你得到的Listint [],不是int

于 2012-04-13T00:25:57.447 回答
4

你的问题来自这个指令Arrays.asList(data)

这个方法的返回List<int[]>不是List<Integer>

这是一个正确的实现

    int[] data = new int[] { 5,0, 0, 1};
    List<Integer> intList = new ArrayList<Integer>();
    for (int index = 0; index < data.length; index++)
    {
        intList.add(data[index]);
    }

    int occurrences = Collections.frequency(intList, 0);
    System.out.println("occurrences of zero is " + occurrences);
于 2012-04-13T00:27:40.907 回答
1

API 需要一个Object, 原始类型不是对象。试试这个:

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

public class stackexample {
    public static void main(String[] args) {
        Integer[] data = new Integer[] { 5,0, 0, 1};
        int occurrences = Collections.frequency(Arrays.asList(data), Integer.valueOf(5));
        System.out.println("occurrences of five is " + occurrences); 
    }
}
于 2012-04-13T00:27:01.120 回答