gpt4 book ai didi

Java HashMap 自定义对象

转载 作者:行者123 更新时间:2023-12-01 21:33:53 28 4
gpt4 key购买 nike

示例:

d1 =“天空是蓝色的”

d2 =“汽车是蓝色的”

Key          Value
the [<d1,1>,<d2,1>]
sky [<d1,1>]
is [<d1,1>,<d2,1>]
blue [<d1,1>,<d2,1>]
car [<d2,1>]

地点:键=字符串

例如:

<d1,1>

d1 = 文档 ID

1 = 该单词在文件中出现的次数

我使用 docid 变量和频率创建了一个文档类型对象。

public class Documento {

private final int docid;
private final int frequencia;

public Documento(int docid, int frequencia) {
this.docid = docid;
this.frequencia = frequencia;
}

public int getDocid() {
return docid;
}

public int getFrequencia() {
return frequencia;
}

@Override
public boolean equals(Object o) {
if ((o instanceof Documento) && docid == ((Documento) o).docid && frequencia == ((Documento) o).frequencia) {
return true;
}
return false;
}

字典类是带有

的 HashMap
public class Dicionario {

public Map<String, Documento> indice = new HashMap<>();

public void InsereDicionario(String palavra, int docid) {
int cont = indice.containsKey(palavra) ? indice.get(palavra).getFrequencia() : 0;
indice.put(palavra, new Documento(docid, cont + 1));
}

public int frequencia(String palavra) {
return indice.get(palavra).getFrequencia();
}

public void criaDicionario(String entrada) {
String[] palavras = entrada.split("\\s+");
for (int i = 0; i < palavras.length; i++) {
InsereDicionario(palavras[i], 1);
}

}
public void ListaPalavras(){
for(String key:indice.keySet()){
System.out.println("");
}

}

但是我真正需要的字典是文档列表,我不知道该怎么做,有人可以帮助我吗?

或者有更简单的方法吗?

最佳答案

如果您需要一份文档列表,为什么不创建一个呢?有了 Java8,这变得更加方便:

例如:

public Map<String, List<Documento>> indice = new HashMap<>();

//register new word
indice.putIfAbsent(palavra, new ArrayList<>());
//add additional occurence
indice.get(palavra).add(documento);
//get frequency
int frequencia = indice.get(palavra)
.stream()
.map(d -> d.getFrequencia())
.reduce(0, (s, i) -> s + i);

另一种方法是使用 Guava 的 Multimap,请参阅 here

关于Java HashMap 自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com