我有一个字符串列表,我试图有一个方法来告诉我哪个字符串在列表中出现次数更多。
这是我到目前为止所做的事情:
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/