单行计算Java中String 中String的出现次数?

我有一个String数组:

 String[] myArray = {"A", "B", "B", "C"}; 

有没有快速计算该数组中字符串出现次数的方法? 是的,我知道我可以迭代并自己做计数:

 int count = 0; String whatToFind = "B"; for (String s : myArray) { if (s.equals(whatToFind)) { ++count; } } 

但我想知道是否有一个实用function。 我在ArraysArrayUtils找不到任何东西。 是否可以使用单线程进行此操作?

您可以使用frequency方法 :

 List 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(); 

您也可以尝试使用充满有用实用程序的Guava 。 使用以下代码,您可以通过Multiset计算频率:

 public static void main(final String[] args) { String[] myArray = {"A", "B", "B", "C"}; Multiset wordsMultiset = HashMultiset.create(); wordsMultiset.addAll(new ArrayList(Arrays.asList(myArray))); int counts=wordsMultiset.count("B"); System.out.println(counts); } 

虽然我知道你正在寻找一个单一的衬垫,但是Guava充满了更多的工具,这是常规java utils无法实现的。