如果符合以下条件,我应该使用什么方法将项目保留在列表中:
我的选择(还有其他选择吗?):
解决方案#1)这似乎是性能最差的最简单的解决方案。
解决方案#2)这似乎是最快的解决方案,但在重新排序列表时会有更多代码。
是否有一个我不知道的对象将被排序,具有键/值对并且具有object.add(index,key,value)或object.getByIndex(index)或object.getByKey等方法(键)?
答案 0 :(得分:1)
由于Roni
建议您需要使用自己的数据结构。我相信这是填写您的要求的唯一选择。
我已经做了一个示例,以starting point
的形式填写您的要求,您可以在此基础上进行构建。
public class MapAndList {
private List<String> keys = new ArrayList<String>();
private Map<String, Object> keyValuePair = new HashMap<String, Object>();
public void addItem(String key, Object item) {
// TODO if the key is already present in the list throw exception
keys.add(key);
keyValuePair.put(key, item);
}
public void removeItem(String key) {
keys.remove(key);
keyValuePair.remove(key);
}
public void removteItem(int index) {
removeItem(keys.get(index));
}
public void addItem(String key, Object item, int index) {
keys.add(index, key);
keyValuePair.put(key, item);
}
}
希望这可以帮助你......
答案 1 :(得分:0)
如果你的项目不会重复,那么使用indexOf()方法获取对象的索引,然后你可以使用get(int Index)直接访问对象
同样重写等于Item对象的方法以返回基于ID的比较,因此您将获得基于Id的重试。
刚检查了indexOf方法的源代码,它只迭代整个列表:(