在java和android中找出数组中的常见元素

时间:2014-07-05 11:33:50

标签: java android arrays sorting

嗨在我的代码中,我有以下数组: -

String [] Category = {Rental,Gifts,Gifts};

float [] Amount = {14.76,15.0,20.0};

我的问题是我想从第一个数组中找到相同的元素,因为有“Gifts”。并根据转换第二个。 因此输出将为: -

类别= {Rental,Gifts};

金额= {14.76,35.0};

有人会告诉我如何在java中实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

你应该在这里使用Map:类别值应该映射到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;
}