我有一个String
数组
String[] myArray = {"A", "B", "B", "C"};
有没有一种快速的方法来计算字符串在该数组中出现的次数?是的,我知道我可以自己迭代和计算:
int count = 0;
String whatToFind = "B";
for (String s : myArray) {
if (s.equals(whatToFind)) {
++count;
}
}
但我想知道是否有一个实用函数来处理这个问题。我在Arrays
和ArrayUtils
上找不到任何东西。有没有可能用一行代码来做到这一点呢?
发布于 2013-07-18 17:25:54
您可以使用the frequency
method
List<String> list = Arrays.asList(myArray);
int count = Collections.frequency(list, "B");
或者一行:
int count = Collections.frequency(Arrays.asList(myArray), "B");
使用Java 8,您还可以编写:
long count = Arrays.stream(myArray).filter(s -> "B".equals(s)).count();
或者使用方法引用:
long count = Arrays.stream(myArray).filter("B"::equals).count();
发布于 2013-07-18 17:43:26
您也可以尝试使用Guava,它包含很多有用的实用程序。使用下面的代码,您可以通过Multiset计算频率
public static void main(final String[] args) {
String[] myArray = {"A", "B", "B", "C"};
Multiset<String> wordsMultiset = HashMultiset.create();
wordsMultiset.addAll(new ArrayList<String>(Arrays.asList(myArray)));
int counts=wordsMultiset.count("B");
System.out.println(counts);
}
虽然我知道你正在寻找一个单一的liner,但是Guava充满了更多的实用程序,这是常规的java实用程序所不可能的。
https://stackoverflow.com/questions/17719494
复制相似问题