0

我必须存储产品及其相应的价格。以下哪种方法会更好:

方法一:

public class Product {

    String productName;

    Integer productCost;

}

方法二:

Map<String, Integer> product.

我认为使用Map会使事情变得更容易,但我仍然被建议使用值对象。

就内存和性能而言,使用方法 1 比方法 2 有什么优势吗?在什么情况下我们可以使用这两种方法呢?

4

2 回答 2

1

Map如果您需要根据商品名称快速查找商品的价格,您应该考虑使用 a 。这里的区别在于,如果您选择第一种方法,则此查找操作将为 O(n),如果选择第二种方法,则此查找操作将为 O(1)(因为第一种方法您必须遍历整个Products 集合才能找到具有正确的名称)。

如果您没有太多想要存储的产品(例如~10,正如您所提到的),那么性能差异可能可以忽略不计,您最好选择更容易理解/管理的方法。随着您要存储的产品数量大幅增加,差异会变得更加明显。

当然,如果您不需要这个快速查找功能,那么使用 a 就没有多大意义了Map

于 2013-09-09T15:37:34.620 回答
1

当您想保持software quality较高时,建议使用 Object 中的值。有了它,Map您应该在需要使用 Object 的值时“携带”它,因此您创建了很多它的副本。从 a 获取值Map也会对性能产生影响,此外,您还必须保存在其中创建的所有对象,以防止garbage collector在不再需要时交换它们。

于 2013-09-09T15:35:29.210 回答