Java 如何在列表中获取包含更多实例的字符串

Java 如何在列表中获取包含更多实例的字符串,java,Java,我有一个字符串列表,我试图有一个方法告诉我哪个字符串在列表中出现的次数更多 以下是我迄今为止所做的工作: package codekata; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class OcurrenciasEnLista { public static void main(String[] args)

我有一个字符串列表,我试图有一个方法告诉我哪个字符串在列表中出现的次数更多

以下是我迄今为止所做的工作:

package codekata;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OcurrenciasEnLista {

    public static void main(String[] args) {

        List<String> lista = new ArrayList<String>();
        lista.add("test");
        lista.add("foo");
        lista.add("foo");
        lista.add("foo");
        lista.add("bar");
        lista.add("crack");
        moreOftenWord(lista);
    }

    private static void moreOftenWord(List<String> lista) {
        Map<String, Integer> mapa = new HashMap<String, Integer>();

        for (String palabra: lista)
            addOrIncrementCount(mapa, palabra);


    }

    private static void addOrIncrementCount(Map<String, Integer> counters,
            String toAdd) {

        Integer currValue = counters.get(toAdd);
        if (currValue == null)
            counters.put(toAdd, 1);
        else
        {
            counters.put(toAdd, currValue + 1);
        }
    }
}
我不知道怎么做的是返回——单词——已经在moreOftenWord方法中了


有谁能给我一个线索吗?

列表中最常见的元素称为列表中的元素

是列表java模式的第一个结果,在需要代码示例的情况下,它看起来是相关的

要在构建计数器映射后获得最常见的元素,您可能需要执行以下操作

Map.Entry<String, Integer> mode = null;
for (Map.Entry<String, Integer> e : counters.entrySet()) {
  if (mode == null || mode.value() < e.value()) {
    mode = e;
  }
}
// Most common string in mode.getKey()
泛指

Map<String, Integer> counters
数据结构维护添加到其中的每个元素的计数。因此,如果您使用此选项,可以删除所有样板代码。然后,您所需要做的就是遍历Multiset并找到具有最大计数的元素

Guava库有许多这样有用的数据结构和更多。

如前所述。是一个支持数据流的库。以下节目:

System.out.println(
    Seq.of("test", "foo", "foo", "foo", "bar", "crack")
       .mode()
);
收益率:

Optional[foo]
免责声明:我为jOOλ背后的公司工作

Optional[foo]