我目前正在开展一个项目。我正在尝试为商店创建一个管理系统。问题是我需要某种库存集合,其中添加已经存在的具有相同名称的元素(更新相同项目的数量)时,它的状态(属性stockLevel)将相应地更新给定数量。有谁知道哪个应该是最好的让这样的事情? Map
,Set
或List
?
答案 0 :(得分:3)
那会是a multiset (a.k.a. a bag)。您可以轻松地将自己的实现作为Map<Item, Integer>
滚动,或者使用现有的一个类,例如: Google Guava的Multiset
。 Apache Commons Collections也有一个,Eclipse Collections等也是。
答案 1 :(得分:1)
同时添加已存在的具有相同名称的元素 (更新相同项目的数量)它的状态(属性stockLevel) 将相应更新给定数量
在您的用例中,Shared
最适合存储信息:
$ awk -F' *[|] *' -v OFS='\t' '/+--/{next} c++{print h[2],$2 ORS h[3],$3 ORS h[7],$7 ORS; next} {split($0,h)}' file
ID 0017050b-62ba-475e-b598-4638d4293250
Name VNFM-POC
Networks vnfm_net_1=172.16.10.10, 10.10.72.12
ID ff21d7c9-dc92-4256-ae49-49aa54c6a67b
Name VNFM_Shreyans
Networks vnfm_net_1=172.16.10.8, 10.10.72.20
ID 3f0a1188-c151-4e5e-9930-969d0423601b
Name dsc-test-3
Networks dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20
用于表示具有关键字Map
的地图,以及用于表示股票数量的值:Map<Product, StockLevel>
对于在地图上进行迭代,您无法使用Product
保留广告订单顺序,但根据您的需要,它应该不是问题。
尽管如此,如果您希望在迭代时保留插入顺序,或者您希望根据某些需要(按字母顺序或其他方式)对地图进行排序,则可以使用更复杂的地图,例如StockLevel
或HashMap
答案 2 :(得分:0)
设置不允许重复值,但这不是解决方案。如果插入重复值,则将忽略它。您可以选择项目列表,然后循环查找重复项。可以添加if条件来增加它的状态。