单线程来计算Java中String []中String的出现次数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我有一个数组String

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

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

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

但我想知道是否有这样的效用函数。我找不到任何东西ArraysArrayUtils。是否可以用单线程来做到这一点?

提问于
用户回答回答于

你可以使用这个frequency方法

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();
用户回答回答于

使用下面的代码,你可以通过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充满了更多的utils,这对于常规的java utils来说是不可能的。

扫码关注云+社区