gpt4 book ai didi

java - 使用键对 ArrayList/HashMap 进行排序

转载 作者:行者123 更新时间:2023-12-01 18:17:49 27 4
gpt4 key购买 nike

我有一个ArrayList

    static ArrayList<term> terms = new ArrayList<term>();

和一个 HashMap

    static HashMap<String,ArrayList<Integer>> inverted_index = new HashMap<String,ArrayList<Integer>>();

这是我的类(class)术语

    public class term {
int docID;
String tokenName;

public term(String tokenName, int docID)
{
this.tokenName = tokenName;
this.docID = docID;
}

public int getDocID() {
return docID;
}
public String getTokenName() {
return tokenName;
}

public String toString(){
return tokenName + " " + docID ;
}}

我想按 tokenName 对其进行排序。我这样做了

    Collections.sort(terms, new Comparator<term>(){
public int compare(term term1, term term2){
return term1.tokenName.compareTo(term2.tokenName);
}
});

现在,当我打印术语时,我确实得到了排序顺序。现在我调用这个函数

    public static void createInvertedIndex(){
inverted_index.clear();
for(int i=0; i<terms.size(); i++){

ArrayList<Integer> doc_list = new ArrayList<Integer>();

if(!inverted_index.containsKey(terms.get(i).tokenName)){

doc_list.add(terms.get(i).docID);
if(i+1 < terms.size()){
if(terms.get(i).tokenName.equals(terms.get(i+1).tokenName)){
while((i+1 < terms.size()) && terms.get(i).tokenName.equals(terms.get(i+1).tokenName))
{
i++;
doc_list.add(terms.get(i).docID);
}
}
}
//System.out.println(terms.get(i)); ------ Get Sorted Terms here
inverted_index.put(terms.get(i).tokenName, doc_list);
}
}
System.out.println(inverted_index); // ------ Get Unsorted terms in this
}

我没有对倒排索引进行排序。我也需要排序吗?如果是这样,该怎么做?

我想要按排序顺序输出。

最佳答案

inverted_index 是一个 HashMap 并且 HashMap 未排序。您需要使用 SortedMap为此,例如 TreeMap .

关于java - 使用键对 ArrayList/HashMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28639541/

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