在一个arraylist中检查相同的值,然后将金额添加到android

时间:2018-10-02 03:48:31

标签: java arraylist

我有两个数组列表:PercentlistAmountlist,我要检查的是在百分比列表中检查相同的值,并添加各自的金额列表值(相同位置)。

例如: PercentList

  • 20
  • 30
  • 40
  • 30
  • 20
  • 30

AmountList:

  • 50
  • 60
  • 100
  • 70
  • 120
  • 90

我想要两个这样的结果: 唯一列表百分比

  • 20
  • 30
  • 40

和AmountList的值相同(来自PercentList)

  • 170(来自PercentList sum(50 + 120)的20个值)
  • 220(来自PercentList sum(60 + 70 + 90)的30个值)
  • 100(来自PercentList sum(100)的40个值)

请帮助

1 个答案:

答案 0 :(得分:0)

我认为您想使用这样的HashMap。地图的键将是百分比,映射的值将是数量。

    ArrayList<Integer> percentList = new ArrayList<>(Arrays.asList(20,30,40,30,20,30));
    ArrayList<Integer> amountList = new ArrayList<>(Arrays.asList(50,60,100,70,120,90));
    HashMap<Integer,Integer> map = new HashMap<>();
    for(int i = 0; i < percentList.size();i++)
    {
        int percent = percentList.get(i);
        int amount = amountList.get(i);
        map.put(percent,(map.containsKey(percent) ? map.get(percent) : 0) + amount);
    }

    ArrayList<Integer> percentUniqueList = new ArrayList<>(map.keySet());
    ArrayList<Integer> amountUniqueList = new ArrayList<>(map.values());

但是,从Map获取键和值并不保留任何顺序,将其用作列表时要小心。我建议创建一个具有两个属性percentamount的类,然后为该类创建一个列表,而不要使用两个单独的整数列表。每当您具有相同长度的多个数组,并且每个数组在相同索引处的元素对应于同一对象的不同属性时,您将很高兴制作一个具有多个属性的类的单个列表。