【问题标题】:Sorting an ArrayList / HashMap with key使用键对 ArrayList / HashMap 进行排序
【发布时间】:2015-04-22 18:07:47
【问题描述】:

我有一个数组列表

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

还有一个 HashMap

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

这是我的学期

    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
}

我没有得到排序的倒排索引。 我也需要排序吗? 如果有,该怎么做?

我希望按排序顺序输出。

【问题讨论】:

  • 您可能希望重命名变量以遵守 Java 命名约定。

标签: java sorting arraylist hashmap


【解决方案1】:

inverted_indexHashMap,而 HashMap 未排序。您需要为此使用SortedMap,例如TreeMap

【讨论】:

  • 假设我想按排序顺序输出HashMap,我该怎么做?
  • HashMap 没有订单; LinkedHashMap 保留您放置内容的顺序,TreeMap 根据键的 Comparable 顺序进行排序。
  • 请输入代码..我不明白你想说什么
  • 我建议您阅读 LinkedHashMapTreeMap 的 Javadoc
  • 我建议阅读有关数据结构的内容,尤其是哈希图实际上是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
相关资源
最近更新 更多