gpt4 book ai didi

java - 我应该使用什么方法来保持列表中带有键的项目的顺序(Java)?

转载 作者:行者123 更新时间:2023-12-01 15:13:23 25 4
gpt4 key购买 nike

如果出现以下情况,我应该使用什么方法将项目保留在列表中:

  1. 我有一个对象,其中包含项目列表,并且可以对这些项目执行操作
  2. 这些项目在列表中排序
  3. 我需要能够更改列表中项目的位置,并根据其 ID 添加或删除项目。
  4. 该列表最终将保存到数据库中(并且项目需要在此列表中保持其顺序)
  5. 在已订购的商品上拥有“order”属性是没有意义的(这些对象可以位于多种类型的列表中)。

我的选择(还有其他选择吗?):

  1. 使用 List 对象,以便它自动保持顺序。但我必须循环遍历所有对象(更糟糕的是)才能通过 Id 找到对象。
  2. 使用带有键/值(对象 ID/对象)的映射,这样可以轻松(且快速)检索对象,并保留另一个仅保留对象顺序的映射(对象 ID/对象顺序) )

解决方案 #1) 这似乎是最简单的解决方案,但存在性能缺陷。

解决方案 #2) 这似乎是最快的解决方案,但在重新排序列表时需要更多代码。

是否有一个我不知道的对象将被排序,具有键/值对并具有诸如 object.add(index, key, value) 或 object.getByIndex(index) 或 object.getByKey(键)?

最佳答案

正如Roni建议的那样,您需要使用自己的数据结构。我相信这是满足您的要求的唯一可行的选择。

我已经完成了一个示例来满足您的要求,作为起点,您可以在此基础上进行构建。

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);
}

}

希望这对您有帮助......

关于java - 我应该使用什么方法来保持列表中带有键的项目的顺序(Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com