我过去使用过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<?>
有什么建议吗?
答案 0 :(得分: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/
您将获得List
int []
而不是int
。
答案 1 :(得分: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);
答案 2 :(得分: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);
}
}