嗨在我的代码中,我有以下数组:-
String[]类别={租金、礼品、礼品};
float[] Amount = {14.76, 15.0, 20.0};
我的问题是我想从第一个数组中找到相同的元素,因为有"礼物"。根据第二个转换。因此输出将是:-
类别={租金、礼品};
Amount = {14.76, 35.0};
谁能告诉我如何在java中实现这个?
您应该在这里使用Map
: Category值应该映射到Amount值(我会根据Java编码风格以小写字母命名它们):
Map<String, Float> costs = new HashMap<>();
for (int i = 0; i < category.length; ++i) {
Float initial = costs.get(category[i]);
if (initial == null)
initial = 0f;
costs.put(category[i], initial + amount[i]);
}
在这些动作之后,costs
映射将包含类似(Rental -> 14.76, Gifts -> 35.0)
要返回数组(不确定,为什么它可能有用),您应该只迭代Map
的项并将它们写入数组:
category = new String[costs.size()];
amount = new Float[costs.size()];
int i = 0;
for (Map.Entry<String, Float> entry: costs.entrySet()) {
category[i] = entry.getKey();
amount[i] = entry.getValue();
++i;
}