gpt4 book ai didi

java - 使用 HashMap 中提供的数据从 ArrayList 中查找选定的数据

转载 作者:行者123 更新时间:2023-12-02 02:35:50 25 4
gpt4 key购买 nike

我有一个产品型号

class Product {

String name;
ArrayList<ProductFeature> productFeatures;
}

我有一个 ProductFeature 模型

class ProductFeature {

String name;
String value;
}

产品功能名称-值对

  1. 对于名称“Color”,值可以是[黑色、红色、黄色等]
  2. 对于名称“Size”,值可以是 [34、38、42、46、47 等]
  3. 对于名称“Weight”,值可以是 [10K、20K、40K、41K 等]

对于一个名称,只有一个值。一个产品不能有两个同名的 ProductFeatures。

我有很多产品,存储在产品的 ArrayList 中,例如对于产品(功能、功能、功能),我有以下数据:-

e.g. (color, size, weight)

#1 Product ( black, 34, 10.12 )
#2 Product ( yellow, 39, 20.00 )
#3 Product ( black, 67, 22.97 )
#4 Product ( red, 12, 48.21 )
#5 Product ( red, 52, 12.13 )
#6 Product ( blue, 85, 10.00 )*
#7 Product ( blue, 10, 80.00 )
#8 Product ( fire, 87, 40.52 )

后端表示已选择具有这些功能的产品

[color=blue, size=85, weight=10.00]

我将这些功能存储在 HashMap<String, String>

[
(color, blue),
(size, 85),
(weight, 10.00)
]

我必须从我的产品列表中找到具有这些功能的所选产品

for (Product product : products) {

ArrayList<ProductFeature> productFeatures = product.getProductFeatures();

// I am stuck here
}

如何比较此列表 productFeatures和我的HashMap<String, String>products 查找哪个产品具有 HashMap 的所有功能吗?

如果需要更多信息,请询问。

最佳答案

您可以执行如下操作:

private Product findMatch( List<Product> products, Map<String, String> map )
{

for (Product product : products)
{

ArrayList<ProductFeature> productFeatures = product.getProductFeatures();

boolean found = true;
for ( ProductFeature feature : productFeatures )
{
if ( map.containsKey( feature.name ) && map.get( feature.name ).equals( feature.value ) )
{
continue;
}
found = false;
break;
}

if ( found )
{
return product;
}
}

return null;

}

但我坚信您可以更好地改进您的设计以实现更好的搜索。

关于java - 使用 HashMap 中提供的数据从 ArrayList 中查找选定的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350308/

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