有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格

首先,我为这个糟糕的标题感到抱歉,我不知道如何描述这个。我有一个sql文件,其中一个表有两列(数字和价格),在JavaIM中提取数据,并将它们存储到两个单独的列表中。列中的一些数字是相同的,例如(100100101),并与不同的价格相关,例如(50,40,60)。我需要找到一种方法,将具有相同列值的所有价格相加,得到一个类似(90,60)的输出。列表是按顺序排列的,所以名为number的列表的索引1将与名为price的列表的索引1相匹配。清单的一个小例子是:

ArrayList<String> number = new ArrayList<String>();
ArrayList<Integer> price = new ArrayList<Integer>();

number.add("100");
number.add("100");
number.add("101");
number.add("101");
number.add("101");
number.add("102");
number.add("103");
number.add("103");

price.add(50);
price.add(150);
price.add(20);
price.add(200);
price.add(75);
price.add(40);
price.add(100);
price.add(125);

任何帮助都将不胜感激,谢谢


共 (3) 个答案

  1. # 1 楼答案

    我希望这段代码对您有所帮助

    Map<String, Integer> result = new HashMap<>();
    for (int i = 0; i < number.size(); i++) {
        String num = number.get(i);
        if (result.containsKey(num)) {
            Integer sum = result.get(num);
            result.put(num, sum + price.get(i));
        } else {
            result.put(num, price.get(i));
        }
    }
    
  2. # 2 楼答案

    假设numberprice的大小相同。您可以这样做:

    HashMap<String, Integer> sumForNumber = new HashMap<>();
    for (int i = 0; i < number.size(); i++) {
        String key = number.get(i);
        sumForNumber.put(key, sumForNumber.getOrDefault(key, 0)  + price.get(i));
    }
    
  3. # 3 楼答案

    您可以使用HashMap<String, Integer>