在java中更新multikeymap中特定键的值

hgc7kmma  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(462)

我试图更新中一组特定键的值 MultiKeyMap 在java中,但无法获得如何做到这一点。
假设我想用不同的值(key1,key2,value2)更新(key1,key2,value1)同一组键。
如果我只是简单地执行输入 MultiKeyMap 然后创建新行,不更新值。 replace() 也不起作用。

  1. package com.example.demo;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.apache.commons.collections4.map.LinkedMap;
  5. import org.apache.commons.collections4.map.MultiKeyMap;
  6. import org.springframework.boot.SpringApplication;
  7. import org.springframework.boot.autoconfigure.SpringBootApplication;
  8. @SpringBootApplication
  9. public class DemoApplication {
  10. public static void main(String[] args) {
  11. //SpringApplication.run(DemoApplication.class, args);
  12. List<Double> list11 = new ArrayList<Double>();
  13. list11.add((double) 3);
  14. list11.add((double) 5000);
  15. List<Double> list22 = new ArrayList<Double>();
  16. list22.add((double) 7);
  17. list22.add((double) 2000);
  18. MultiKeyMap<String, List<Double>> multiKeyMap = new MultiKeyMap<String, List<Double>>();
  19. multiKeyMap.put("sourcecode11", "basecode11", "productcode11", list11);
  20. multiKeyMap.put("sourcecode22", "basecode22", "productcode22", list22);
  21. String source = "sourcecode11";
  22. String base = "basecode11";
  23. String product = "productcode11";
  24. if (multiKeyMap.containsKey(source, base, product)) {
  25. List<Double> fees = multiKeyMap.get(source, base, product);
  26. Double count = fees.get(0);
  27. Double amount = fees.get(1);
  28. count +=1;
  29. amount+=500;
  30. List<Double> list33 = new ArrayList<Double>();
  31. list33.add(count);
  32. list33.add(amount);
  33. multiKeyMap.
  34. multiKeyMap.replace(source, base, product, list33);
  35. }
  36. }
  37. }

在replace函数中获取错误
不适用于参数(string、string、string、list)
请提供更新multikeymap中值的解决方案。
maven依赖项:

  1. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
  2. <dependency>
  3. <groupId>org.apache.commons</groupId>
  4. <artifactId>commons-collections4</artifactId>
  5. <version>4.4</version>
  6. </dependency>
l3zydbqr

l3zydbqr1#

可以使用put将(键1、键2、键3)替换为新的值列表。您的代码在这个示例中运行正确

  1. List<Double> list11 = new ArrayList<>();
  2. List<Double> list22 = new ArrayList<>();
  3. list22.add((double) 7);
  4. list22.add((double) 2000);
  5. MultiKeyMap<String, List<Double>> multiKeyMap = new MultiKeyMap<>();
  6. multiKeyMap.put("sourcecode11", "basecode11", "productcode11", list11);
  7. multiKeyMap.put("sourcecode22", "basecode22", "productcode22", list22);
  8. String source = "sourcecode22";
  9. String base = "basecode22";
  10. String product = "productcode22";
  11. if (multiKeyMap.containsKey(source, base, product)) {
  12. List<Double> fees = multiKeyMap.get(source, base, product);
  13. System.out.println("before :" + multiKeyMap);
  14. Double count = fees.get(0);
  15. Double amount = fees.get(1);
  16. count += 1;
  17. amount += 500;
  18. List<Double> list33 = new ArrayList<>();
  19. list33.add(count);
  20. list33.add(amount);
  21. multiKeyMap.put(source, base, product, list33);
  22. System.out.println("after :" + multiKeyMap);
  23. }
展开查看全部
fdx2calv

fdx2calv2#

这令人困惑。您通过获取“count”和“amount”来处理列表“fees”,将它们递增,然后将递增的值作为两个新值添加到列表中。请告诉我们那里发生了什么事。
同样令人担忧的是,您似乎将列表视为某种数据封装类。

相关问题