EG;我希望我的TreeSet / HashMap按顺序存储1,19,3,4,2,0,因为它是它们被添加到地图的顺序。
我听说LinkedHashMap是首选解决方案。但我的问题是,我们可以使用TreeSet / HashMap生成相同的结果,并将一些修改引入比较To()?
答案 0 :(得分:2)
没有。你不能这样做。您必须使用LinkedHashMap
或其他自定义地图实施; TreeMap
和HashMap
无法支持广告订单。
答案 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;
}
我不是说你应该,但你可以。这闻起来像是面试问题或家庭作业问题,所以他们可能只是测试看看如果海报了解基础馆藏内部的情况?