gpt4 book ai didi

java - 重构 HashMap 的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:23 24 4
gpt4 key购买 nike

我有一个 HashMap,它将公司映射到他们销售的产品的 ArrayList,如下所示:

thiscompany --> [productA, productB...]
thatcompany --> [productC, productA...]

因此,很容易生成给定特定公司的产品列表。请注意,多家公司可能销售相同的产品。问题是我还需要根据特定产品找到所有销售该产品的公司。而且很快。这种查找可能发生一次,也可能发生多次。我想知道提供此功能的最有效方法。

目前,我正在通过遍历每个 ArrayList 并将每个产品映射到其供应商来生成新的数据结构。但这很昂贵,因为每次添加之前我都必须检查我正在创建的 HashMap 是否包含该产品作为键,而且它需要我获取每个 ArrayList,添加新供应商,删除旧 ArrayList 然后映射每个条目的新条目。不过,我根本看不到更快的方法,也许有人可以为我提供一些见解?

最佳答案

如何将 ArrayList 更改为 HashSet。

List<String> findCompanies(Map<String,Set<String>> companyToProducts, String product) {
List<String> companies = new ArrayList<String>();
for (Map.Entry<String,Set<String>> entry : companyToProducts) {
Set<String> products = entry.getValue();
if (products.contains(product)) {
companies.add(entry.getKey());
}
}
return companies;
}

另一种常见的方法是在数据库中使用一个表,其中包含产品列和公司列,然后执行以下操作:

select distinct company from companyToProduct where product = 'cheese';

关于java - 重构 HashMap 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334887/

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