HashMap值计算没有迭代

use*_*215 3 java

我有下面的地图,我想用费用地图中的每个值除以率而不迭代每个条目并构建新的地图.这可能吗?

final String rate="2";
Map<String,BigDecimal> charges=new HashMap<String,BigDecimal>();
charges.put("tax", new BigDecimal(22));
charges.put("vat", new BigDecimal(200));
charges.put("gross", new BigDecimal(100));
charges.put("principal", new BigDecimal(150));
Run Code Online (Sandbox Code Playgroud)

分裂后

charges.put("tax", new BigDecimal(11));
charges.put("vat", new BigDecimal(100));
charges.put("gross", new BigDecimal(50));
charges.put("principal", new BigDecimal(75));
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

可能吗?

不可以.此外,您一开始并不清楚应该使用地图.对于Charge具有适当字段的类型,您几乎肯定会更好.(这可能是4个字段,或者你可以从其他字段计算一些值.)

然后,您可以添加一个方法,将所有相关字段值除以常量,或者(更好的IMO)返回具有新值的类型的实例(使Charge类型本身不可变).