Java Collections.frequency()方法是否将输出设为零?
此代码打印值“0”:Java Collections.frequency()方法是否将输出设为零?,java,list,collections,char,frequency,Java,List,Collections,Char,Frequency,此代码打印值“0”: String name=“aaa”; char[]mychar=新字符[name.length()]; mychar=name.toCharArray(); 列表值=Arrays.asList(mychar); int m=Collections.frequency(值“a”); 系统输出打印项次(m); 为什么?Collections#frequency遍历列表,计算与传递给方法的参数相等的元素数 在您的示例中,列表的每个元素都是一个基本类型的数组,字符,但是您试图在列
String name=“aaa”;
char[]mychar=新字符[name.length()];
mychar=name.toCharArray();
列表值=Arrays.asList(mychar);
int m=Collections.frequency(值“a”);
系统输出打印项次(m);
为什么?Collections#frequency
遍历列表
,计算与传递给方法的参数相等的元素数
在您的示例中,列表
的每个元素都是一个基本类型的数组,字符
,但是您试图在列表
中找到一个单独的字符
,它显然不存在。集合#频率
在列表
中迭代,计算与传递给方法的参数相等的元素数
在您的示例中,
列表
的每个元素都是一个数组的基本类型,字符
,但是您试图在列表
中找到一个单独的字符
,它显然不存在。因为数组.asList
提供了一个列表
,不是一个列表
。我应该怎么做才能得到正确的输出?在Java8之前,没有办法在一行中完成。使用Java 8,您可以编写string.chars().filter(c->c=='a').count()
。因为Arrays.asList
为您提供了一个列表,而不是列表
。为了获得正确的输出,我应该做什么?在Java 8之前的一行中无法做到这一点。使用Java 8,您可以编写string.chars().filter(c->c=='a').count()
。然后我该怎么做才能获得正确的输出?您应该使用List
,而不是将数组添加到其中,但是char
s本身。为了获得正确的输出,我应该怎么做?您应该使用List
,而不是将数组添加到其中,而是添加char
s本身。
String name = "aaa";
char[] mychar = new char[name.length()];
mychar = name.toCharArray();
List<char[]> values = Arrays.asList(mychar);
int m = Collections.frequency(values, 'a');
System.out.println(m);