fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.math.BigDecimal;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.stream.Collectors;
  11.  
  12. /* Name of the class has to be "Main" only if the class is public. */
  13. class Ideone
  14. {
  15. public static void main (String[] args) throws java.lang.Exception
  16. {
  17. List<MyClass> list = new ArrayList<>(List.of(
  18. new MyClass("I", "am", "Sarah", BigDecimal.valueOf(5.33)),
  19. new MyClass("I", "am", "Frank", BigDecimal.valueOf(2.75)),
  20. new MyClass("I", "am", "Sarah", BigDecimal.valueOf(3.56)),
  21. new MyClass("I", "am", "Frank", BigDecimal.valueOf(7.12)),
  22. new MyClass("I", "am", "John", BigDecimal.valueOf(1.11))
  23. ));
  24.  
  25. Map<String, BigDecimal> mapRes = list.stream()
  26. .collect(Collectors.toMap(mc -> mc.chainNames(), mc -> mc.getAmount(), (decimal1, decimal2) -> decimal1.add(decimal2)));
  27.  
  28. System.out.println(mapRes);
  29. }
  30. }
  31.  
  32. class MyClass {
  33. private String name1;
  34. private String name2;
  35. private String name3;
  36. private BigDecimal amount;
  37.  
  38. public MyClass(String name1, String name2, String name3, BigDecimal amount) {
  39. this.name1 = name1;
  40. this.name2 = name2;
  41. this.name3 = name3;
  42. this.amount = amount;
  43. }
  44.  
  45. /* ... your implementation ...*/
  46.  
  47. public BigDecimal getAmount() {
  48. return amount;
  49. }
  50.  
  51. public String chainNames() {
  52. StringBuilder strBld = new StringBuilder(name1);
  53. strBld.append(name2);
  54. strBld.append(name3);
  55. return strBld.toString();
  56. }
  57. }
Success #stdin #stdout 0.11s 49220KB
stdin
Standard input is empty
stdout
{IamJohn=1.11, IamSarah=8.89, IamFrank=9.87}