如何告诉java的TreeSet或HashMap其contenst被索引的顺序是插入顺序(不想要LinkedHashMap)?

时间:2018-04-25 15:54:37

标签: java dictionary hashmap

EG;我希望我的TreeSet / HashMap按顺序存储1,19,3,4,2,0,因为它是它们被添加到地图的顺序。

我听说LinkedHashMap是首选解决方案。但我的问题是,我们可以使用TreeSet / HashMap生成相同的结果,并将一些修改引入比较To()?

3 个答案:

答案 0 :(得分:2)

没有。你不能这样做。您必须使用LinkedHashMap或其他自定义地图实施; TreeMapHashMap无法支持广告订单。

答案 1 :(得分:0)

你可以使用一个非常复杂的compareTo(...)方法来实现它,但它基本上需要自己,手动地,在树外部的某个地方跟踪树的状态。这只是在不使用LinkedHashMap的情况下重新创建LinkedHashMap。同样的事情,但更复杂,难以阅读和维护代码。没理由这样做。

答案 2 :(得分:-1)

"你做不到。"好吧,你可以。您需要做的就是将插入顺序添加到您要存储的对象中,并在compareTo或比较器中对其进行说明。

@Override
public int compareTo(Object o) {
    int returnValue = 0;
    if(o instanceof InsertionObject) {
        InsertionObject newObject = (InsertionObject)o;
        if(this.insertionOrder != newObject.insertionOrder) {
            if(this.insertionOrder < newObject.insertionOrder) {
                returnValue = -1;
            }
            else {
                returnValue = 1;
            }
        }
    }
    else {
        throw new RuntimeException("Insert error message here.");
    }
    return returnValue;
}

我不是说你应该,但你可以。这闻起来像是面试问题或家庭作业问题,所以他们可能只是测试看看如果海报了解基础馆藏内部的情况?