gpt4 book ai didi

java - 如何使用 HashMap 来访问和复制列表中的项目?

转载 作者:行者123 更新时间:2023-11-30 06:31:39 31 4
gpt4 key购买 nike

我正在和 friend 一起开发电子游戏。为了考虑不同类型的项目,我们最初为每个扩展项目类的项目创建了一个类。这些类中的数据不多,所以我正在寻找替代方案,这样我们的工作区就不会那么困惑。我开始学习 HashMap,我认为它们是添加项目的绝佳方式。我们还可以设置它,而不是使用 int 访问 HashMap 中的项目,这基本上只是使它成为一个 ArrayList,我们可以使用字符串访问它们。所以我开始添加这个功能,在 Item 类中创建匿名 Items,

    private static Item coal = new Item() {
weight = .2;
setImageID(0, 16);
}

并将它们添加到 HashMap 中。

    itemMap.put("Coal", coal);

在做了其中一些之后,我意识到列表中的每种类型只有一个项目,如果我们想要在不修改原始项目的情况下修改这些项目的倍数,我们需要制作副本。我开始研究如何做到这一点。我们可以使用复制构造函数,但 Item 中的变量太多,无法高效完成。我们当然可以做到这一点,但我想知道是否有一个简单的解决方案。我们能把所有的项目都定下来吗?我只是在吐口水,因为我对这个编程领域是全新的。我们也可能做错了整件事。我只需要一种方法来使用 HashMap 创建某种“项目数据库”,我可以使用它来访问列表中无限数量的项目。有什么建议吗?

最佳答案

拥有一个具有集合值的 HashMap(或一个列表,取决于同一项目是否可以存在多次)怎么样?

Map<String, Set<Item>> map = new HashMap<String, Set<Item>>();

这样一来,每种类型都可以有多个项目。

向类型集中添加新项目的一个习惯用法如下:

Set<Item> items = map.get(type);
if (items == null) {
items = new HashSet<Item>();
items.put(type, items);
}
items.add(item);

为您的类型使用 Enum 而不仅仅是 String 可能不是一个坏主意。然后您可以执行类似 map.put(Item.COAL, itemSet); 的操作,这将有助于防止拼写错误和区分大小写问题。

关于java - 如何使用 HashMap 来访问和复制列表中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621519/

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