2016-09-10 3 views
-6

У меня есть этот объект Java, который используется для хранения элемента:Считать значения из объекта Java?

public class PaymentDetailsItem 
{ 
    private String name; 
    private String amount; 
    private int quantity; 
    private String currencyID; 

    public PaymentDetailsItem(String name, String amount, int quantity, String currencyID){ 
     this.name = name; 
     this.amount = amount; 
     this.quantity = quantity; 
     this.currencyID = currencyID; 
    } 

    ............ 
} 

я использую список для хранения нескольких объектов. Как я могу суммировать общую сумму из каждого хранилища объектов в Список?

+1

Реализации 'List', на Java, имеют [' size() ') (http://docs.oracle.com/javase/7/docs/api/java/util/List.html#size ()) метод; просто вызовите его, и он даст вам количество элементов внутри него. Если вам нужна сумма накопления члена 'amount' (для всех элементов), вам необходимо пересечь коллекцию, преобразовать значение в соответствующий тип и вычислить это (или сделать что-то более смешное с Streams и тому подобное, если вы используете Java 8). –

+0

По сумме, вы имеете в виду строку property "amount"? – djeison

+1

Почему сумма String на первом месте? –

ответ

1

Вы можете использовать Java 8 Стрит API и реализовать что-то вроде этого:

public static void main(String[] args) { 
    PaymentDetailsItem payment = new PaymentDetailsItem("test", "100.00", 10, "1"); 
    PaymentDetailsItem payment2 = new PaymentDetailsItem("test number 2", "250.00", 10, "2"); 

    List<PaymentDetailsItem> payments = new ArrayList<>(); 
    payments.add(payment); 
    payments.add(payment2); 

    List<String> amounts = payments.stream().map(PaymentDetailsItem::getAmount).collect(Collectors.toList()); 
    System.out.println("Here we have the extracted List of amounts: " + amounts); 

    String totalAmount = amounts.stream() 
      .reduce((amount1, amount2) -> String.valueOf(Float.valueOf(amount1) + Float.valueOf(amount2))).get(); 
    System.out.println("Total amount obtained by using .reduce() upon the List of amounts: " + totalAmount); 

    System.out.println("Or you can do everything at once: " + payments.stream().map(PaymentDetailsItem::getAmount) 
      .reduce((amount1, amount2) -> String.valueOf(Float.valueOf(amount1) + Float.valueOf(amount2))).get()); 
} 

Запомнить реализовать сорбент для атрибута суммы.

+0

Спасибо вам большое! –

Смежные вопросы