地图接口爪哇



我正在学习是否可以为我正在尝试创建的程序使用Map<K,V>接口。我的程序包含两个大数组,String[] groceryProducts和各自的价格:int[] prices。 我想对这两个数组使用Map<K,V>,以便将groceryProduct[xxx]映射到其相应的price[yyy]。 我是否正确理解我可以使用 Map 的参数 (K,V) 来执行此操作? 我可以做点什么吗:

Map(prices[], groceryProducts[]);

然后将它们的所有产品和价格添加到地图中?这是这两个参数的用途吗? 我对编程很陌生,如果我的问题太愚蠢,我很抱歉:)。

附带问题:将 Map 用于大数据量会影响性能吗?我认为在这种情况下它仍然比嵌套循环更好,不是吗?谢谢!

是的,你可以为此使用 Map;它的性能几乎比你用两个数组做的任何事情都要好。

两个参数中的第一个是映射中条目的"键";每个键必须是唯一的。第二个参数是为该键存储的值。在Map<String, Integer>的情况下,您有一个字符串键和一个整数值。对于 Java 映射,这些参数定义将存储在映射中的值的类型。

如果具有值的键已存储在映射中,并且您执行存储该键的不同值的语句,它将覆盖第一个键。

但是,您不会以您拥有的方式声明它们。最正常的方式是:

Map<String, Float> priceMap = new HashMap<>();

之后,您可以使用如下语句加载地图:

priceMap.put("bread", 3.00);
priceMap.put("eggs",  2.50);

等。

然后,当您有一个字符串变量item具有您想要价格的项目的名称时,您可以使用以下语句:

Float price = priceMap.get(item);

其他人建议了一个Item对象,其中包含项目的名称和价格。在其他情况下,这是合理的,甚至更好。在大多数重要的编程项目中,您的"Item"将具有多个特征(颜色,制造商等),并且OO编程的想法是创建一个类来表示这样的对象并将其所有特征一起存储在该对象中。在这种情况下,您可能有一个Map<String, Item>从其名称(或其他某个字符串键)映射到整个项目,然后从那里获取价格。

(编辑:对不起,我使用了整数的浮点数。同样的原则适用,我只是在考虑一个包含美元零头的价格,因为这是我最熟悉的。人们也可以考虑使用BigDecimal,它可以更好地处理具有精度限制的小数。

最新更新