最适合重复元素的Java Collection

时间:2016-08-20 16:50:17

标签: java collections

我目前正在开展一个项目。我正在尝试为商店创建一个管理系统。问题是我需要某种库存集合,其中添加已经存在的具有相同名称的元素(更新相同项目的数量)时,它的状态(属性stockLevel)将相应地更新给定数量。有谁知道哪个应该是最好的让这样的事情? MapSetList

3 个答案:

答案 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保留广告订单顺序,但根据您的需要,它应该不是问题。

尽管如此,如果您希望在迭代时保留插入顺序,或者您希望根据某些需要(按字母顺序或其他方式)对地图进行排序,则可以使用更复杂的地图,例如StockLevelHashMap

答案 2 :(得分:0)

设置不允许重复值,但这不是解决方案。如果插入重复值,则将忽略它。您可以选择项目列表,然后循环查找重复项。可以添加if条件来增加它的状态。