【发布时间】:2015-07-01 17:35:42
【问题描述】:
我是编程新手,我正在尝试编写一种方法来选择列表中的最佳选项。这是我所拥有的:
item_no item_type origin
10 2 US
10 2 FR
10 4 UK
11 6 FR
我把这些放在一个列表中:
[[10, 2, US], [10, 2, FR], [10, 4, UK], [11, 6, FR]]
我将在我的方法中使用此列表,并且我还有一个具有某些功能的特定项目。让我们选择我的具体项目为;
item_no item_type origin
10 4 GE
现在,我想要做的是,如果列表中的某个项目的优先级高于我的项目,我将使用更高优先级项目的特征更新我的项目的特征。优先级逻辑分别取决于item_code、item_type和origin。为了获得优先顺序,我使用如下地图:
HashMap<String, Integer> itemCodeOrder = x.getItemCodeOrder();
HashMap<String, Integer> itemTypeOrder = y.getItemTypeOrder();
HashMap<String, Integer> originOrder = z.getOriginOrder()
一个典型的优先顺序是这样的:
- itemCodeOrder : 12, 10, 11
- itemTypeOrder : 6, 2, 4
- originOrder : 美国、英国、法国、GE
首先,我想在列表中选择优先级更高的项目,然后将该项目与我的项目进行比较以进行更新与否。例如,在上面的列表中item_no 10 的优先级高于11,所以我将选择具有item_no 10 的项目之一。然后,我将查看item_type:我有2 和4,现在我将选择带有2 的项目之一。所以在查看origin 之后,我会得到[10, 2, US],最后我会将它与我的项目进行比较,更新如下:
item_no item_type origin
10 2 US
我想编写一个通用代码,但我找不到使用 HashMap 逻辑获取列表中前一项的正确方法。我该如何处理?
【问题讨论】:
-
您可以编写项目比较器并按优先级对列表进行排序。然后对于特定项目,只需查找列表是否具有更大的优先级。
-
正如 Stanislav 评论的那样,您需要的是一份好的比较器工作。您可以使用包含优先级字典作为构造函数参数的映射来创建它。
标签: java algorithm list hashmap