使用键对 ArrayList / HashMap 进行排序

Sorting an ArrayList / HashMap with key

我有一个 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。 我也需要排序吗? 如果可以,该怎么做?

我想要按排序顺序输出。

inverted_indexHashMapHashMap 未排序。您需要使用 SortedMap for this, like TreeMap.