Java HashMap自定义对象

Java HashMap自定义对象,java,object,arraylist,hashmap,Java,Object,Arraylist,Hashmap,例如: d1=“天空是蓝色的” d2=“这辆车是蓝色的” 以及dictionary类,该类是具有 public class Dicionario { public Map<String, Documento> indice = new HashMap<>(); public void InsereDicionario(String palavra, int docid) { int cont = indice.containsKey(p

例如:

d1=“天空是蓝色的”

d2=“这辆车是蓝色的”

以及dictionary类,该类是具有

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("");
        }

}
公共类diciario{
publicmap indice=新HashMap();
公共作废(字符串palavra,内部文档ID){
int cont=indice.containsKey(palavra)?indice.get(palavra.getFrequencia():0;
指示放置(palavra,新文件(文档ID,续+1));
}
公共整数频率(字符串palavra){
返回指示符.get(palavra.getFrequencia();
}
公共无效criaDicionario(字符串entrada){
字符串[]palavras=entrada.split(\\s+);
for(int i=0;i
但我真正需要的是一个字典的文件清单,我不知道如何做到这一点,有人可以帮我吗

或者有更简单的方法吗?

Map
Map<String, List<Documento>>
显然,您需要修改代码的其余部分

例如,当您需要向字典添加内容时,如果这是您第一次需要使用单个文档创建
列表
,那么下次您需要使用已创建的列表并在其中添加文档。

Map
显然,您需要修改代码的其余部分


例如,当您需要向字典中添加某些内容时,如果这是您第一次需要使用单个文档创建
列表
,那么下次您需要使用已创建的列表并在其中添加文档。

如果您需要文档列表,为什么不创建一个呢?使用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);
publicmap indice=newhashmap();
//注册生词
印度葡萄园(palavra,new ArrayList());
//添加其他事件
标记。获取(帕拉夫拉)。添加(文档);
//获取频率
int frequencia=indice.get(palavra)
.stream()
.map(d->d.getFrequencia())
.减少(0,(s,i)->s+i);

另一种选择是使用Guava的Multimap,请参见

如果您需要文档列表,为什么不创建一个呢?使用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);
publicmap indice=newhashmap();
//注册生词
印度葡萄园(palavra,new ArrayList());
//添加其他事件
标记。获取(帕拉夫拉)。添加(文档);
//获取频率
int frequencia=indice.get(palavra)
.stream()
.map(d->d.getFrequencia())
.减少(0,(s,i)->s+i);
另一种方法是使用Guava的Multimap,请参见

.map(d->d.getFrequencia())返回:
接口流中的方法映射不能应用于给定类型;必需:Function.map(d->d.getFrequencia())返回:
接口流中的方法映射不能应用于给定类型;必需:Function
Map<String, List<Documento>>
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);