我有一个String
数组:
String[] myArray = {"A", "B", "B", "C"};
有没有快速计算该数组中字符串出现次数的方法?是的,我知道我可以迭代并自己做计算:
int count = 0;
String whatToFind = "B";
for (String s : myArray) {
if (s.equals(whatToFind)) {
++count;
}
}
但我想知道是否有一个实用功能。我在Arrays
或ArrayUtils
找不到任何内容。是否可以使用单线程进行此操作?
答案 0 :(得分:74)
您可以使用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();
答案 1 :(得分:2)
您还可以尝试使用充满实用工具的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);
}
虽然我知道您正在寻找单个衬垫,但是Guava充满了许多常规java utils无法实现的工具。