一行计算Java中String []中String的出现次数?

sta*_*lar 15 java arrays

我有一个数组String:

String[] myArray = {"A", "B", "B", "C"};
Run Code Online (Sandbox Code Playgroud)

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

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

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

ass*_*ias 74

您可以使用以下frequency方法:

List<String> list = Arrays.asList(myArray);
int count = Collections.frequency(list, "B");
Run Code Online (Sandbox Code Playgroud)

或者在一行中:

int count = Collections.frequency(Arrays.asList(myArray), "B");
Run Code Online (Sandbox Code Playgroud)

使用Java 8,您还可以编写:

long count = Arrays.stream(myArray).filter(s -> "B".equals(s)).count();
Run Code Online (Sandbox Code Playgroud)

或者使用方法参考:

long count = Arrays.stream(myArray).filter("B"::equals).count();
Run Code Online (Sandbox Code Playgroud)

  • 整齐!不知道那一个.+1 (12认同)
  • @RohitJain我认为这是一个品味问题 - 为您添加单线版! (6认同)