2017-02-23 1 views
4

Je souhaite ajouter une valeur de correction dans la liste des grandes décimales. permet de dire que j'ai ci-dessous la liste des grandes décimales avec des valeursAjout de la valeur de correction dans la liste de bigdecimal

[10, 20, 30, 40] 

Maintenant voulez ajouter de la valeur de correction permet de dire 10 dans chaque élément dans la liste si la liste résultante serait

[20, 30, 40, 50] 

approche actuelle:

public static void main(String... args) { 
     List<BigDecimal> bigDecimals = new ArrayList<>(); 

     bigDecimals.add(new BigDecimal(10)); 
     bigDecimals.add(new BigDecimal(20)); 
     bigDecimals.add(new BigDecimal(30)); 
     bigDecimals.add(new BigDecimal(40)); 
     System.out.println(bigDecimals); 

     for(int i=0;i<bigDecimals.size();i++) 
     { 
      bigDecimals.set(i, bigDecimals.get(i).add(new BigDecimal("10"))); 
     } 

     System.out.println(bigDecimals); 
    } 

y at-il une meilleure façon ou d'alternat ive façon d'utiliser java 8?

+0

Qu'est-ce qu'une 'valeur fixe'? Voulez-vous dire * fixé *? – EJP

+0

@EJP yup. Supposons que la valeur initiale de la liste soit [10, 20, 30, 40] en ajoutant la valeur fixe "10". liste résultante serait [20, 30, 40, 50] Explication est déjà fournie dans la question. –

Répondre

5

en Java 8, il est aussi simple que

bigDecimals.replaceAll(BigDecimal.TEN::add); 

Voir la javadoc pour List#replaceAll

+1

cela semble fonctionner mais quand nous faisons bigDecimals.replaceAll (BigDecimal.TEN :: soustraire); il en résulte quelque chose d'autre que ce qu'il devrait être. – arjun

+3

Pour soustraire TEN, vous devrez soit écrire l'expression lambda 'd -> d.subtract (TEN)' ou utiliser 'TEN.negate() :: add'. C'est parce que l'addition est commutative alors que la soustraction ne l'est pas. – Misha

1

C'est une simple opération de carte ...

bigDecimals.stream().map(bd -> bd.add(BigDecimal.TEN)).forEach(System.out::println); 
+0

Merci pour la réponse rapide, mais la liste originale n'est pas mise à jour en utilisant la solution mentionnée ci-dessus. –

+3

@SnehalPatel mon mauvais ... vous avez obtenu votre réponse maintenant de toute façon :) – Eugene