Добавить значения в одну переменную из массива карт в Java - PullRequest
0 голосов
/ 27 сентября 2019

Предположим, у нас есть список в Java, содержащий Карты, например:

Arr = [
 {
    "checkno": "322108888           ",
    "amount": 2500,

  },
  {
    "checkno": "321979826           ",
    "amount": 3900,

  }
]

Я хочу добавить все суммы в одну переменную, так что мой результат для моего случая будет totalAmount = 6400. Так что янапишите это:

Arr.stream().forEach(a -> {
 double sum = 0d,
 sum = sum + a.mount
 return sum
})

но, похоже, не работает нормально.У вас есть идеи, почему?

Ответы [ 4 ]

1 голос
/ 27 сентября 2019

Вот вся программа, которую вы пытаетесь.

POJO CheckData

class CheckData {
private String checkNumber;
private int amount;

public CheckData() {
}

public CheckData(String checkNumber, int amount) {
    super();
    this.checkNumber = checkNumber;
    this.amount = amount;
}

public String getCheckNumber() {
    return checkNumber;
}

public void setCheckNumber(String checkNumber) {
    this.checkNumber = checkNumber;
}

public int getAmount() {
    return amount;
}

public void setAmount(int amount) {
    this.amount = amount;
}

}

основной класс

public class Test4 extends Thread {
public static void main(String[] args) {
    List<CheckData> list = new ArrayList<CheckData>();
    list.add(new CheckData("322108888", 2500));
    list.add(new CheckData("321979826", 3900));

    int sum = list.stream().filter(o -> o.getAmount() > 10).mapToInt(o -> o.getAmount()).sum();
    System.out.println(sum);
}
}
1 голос
/ 27 сентября 2019
import java.util.*;

public class SO58133962 {
  public static void main(String[] args) {
    List<Map<String,Integer>> nameToCosts = new ArrayList<>();
    Map<String,Integer> one = new HashMap<>();
    one.put("322108888",2900);
    Map<String,Integer> two = new HashMap<>();
    two.put("321979826",3900);
    nameToCosts.add(one);
    nameToCosts.add(two);

    double sum = nameToCosts.stream().map(Map::values).flatMap(Collection::stream).mapToDouble(Integer::doubleValue).sum();
    System.out.println(sum);
  }
}

Это должно работать!

1 голос
/ 27 сентября 2019

Вы можете сначала map его удвоить и позвонить .sum()

double sum = Arr.stream().mapToDouble(YourClass::getAmount).sum();
0 голосов
/ 27 сентября 2019

Вы можете просто перебрать arrayList, получить объект Map.Из объекта карты вы можете получить значение ключа «сумма».

int amount =0;
for (int i = 0; i < list.size(); i++) 
    amount += (int) list.get(i).get("amount");

Полный рабочий пример -

class Solution {

    public static void main(String[] args) {

        ArrayList<HashMap> list = new ArrayList<>();

        HashMap<String, Integer> map = new HashMap<>();

        map.put("checkno", 322108888);
        map.put("amount", 2500);

        list.add(map);

        map = new HashMap<>();
        map.put("checkno", 321979826);
        map.put("amount", 3900);

        list.add(map);

        int amount = 0;
        for (int i = 0; i < list.size(); i++)
            amount += (int) list.get(i).get("amount");

        System.out.println(amount);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...