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) {

        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 方法中已有的 -the word-。

有人可以给我一些线索吗?

最佳答案

列表中最常见的元素称为 "mode"列表中的。

http://www.dreamincode.net/forums/topic/39745-get-mode-of-a-list/是“mode of a list java”的第一个结果,如果您需要代码示例,它看起来很相关。

要在构建计数器 map 后获取最常见的元素,您可能需要执行类似的操作

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 counters

一般为

Map<String, Integer> counters

关于java - 如何获取列表中出现次数较多的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8651538/

相关文章:

java - 我正在尝试使用 JDBC 从 Oracle 表中提取 XMLTYPE 列,但遇到一些问题

java - 在jsp页面中调用java函数

java - 全局变量在更新时附加多个数据副本

java - JaxB 在大文档上的性能

java - 具有 Spring Boot Oaut2UserService 问题的 Azure Active Directory

java - Jackson 用空对象反序列化数组

java - 带有项目/实体集合的 Spring Cache

java - iText:通过投影变换添加图像

java - Hibernate @Version 不适用于一对多

java - Spring Security OAuth2 - 是否可以更改表和列名称?