单行计算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。 我在Arrays
或ArrayUtils
找不到任何东西。 是否可以使用单线程进行此操作?
您可以使用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无法实现的。