一个Map,不清除里面的key具体是多少 举例:包含 '2021年1月_N':'22' '2021年1月_U':'10' '2021年2月_N':'33' '2021年2月_U':'10' '2021年1月_P':'' '2021年2月_P':'' 。六个元素,要求:把相同年月的后缀为U的value乘以100,除以相同年份后缀为N的值,赋值给相同年份后缀为P的元素,运算时做非空校验
时间: 2023-12-24 09:02:59 浏览: 62
可以使用Java代码来实现对Map中元素的处理。以下是一个示例代码:
```java
import java.util.*;
public class MapCalculation {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("2021年1月_N", "22");
map.put("2021年1月_U", "10");
map.put("2021年2月_N", "33");
map.put("2021年2月_U", "10");
map.put("2021年1月_P", "");
map.put("2021年2月_P", "");
// 遍历Map中的键值对
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// 判断当前元素是否以"_N"结尾
if (key.endsWith("_N")) {
// 获取相同年份的后缀为"U"的元素的键
String uKey = key.replace("_N", "_U");
// 判断相同年份的后缀为"U"的元素是否存在且非空
if (map.containsKey(uKey) && !map.get(uKey).isEmpty()) {
int nValue = Integer.parseInt(value);
int uValue = Integer.parseInt(map.get(uKey));
// 计算结果并赋值给相同年份的后缀为"P"的元素
String pKey = key.replace("_N", "_P");
double pValue = uValue != 0 ? (uValue * 100.0) / nValue : 0;
map.put(pKey, String.valueOf(pValue));
}
}
}
// 打印结果
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
以上代码中,我们使用一个Map来存储元素,然后通过遍历Map中的键值对进行处理。对于以"_N"结尾的键,我们找到对应的后缀为"U"的键,并判断其值是否存在且非空。如果满足条件,则将对应的值进行计算,并赋值给相同年份的后缀为"P"的元素。
运行以上代码将得到以下输出:
```
2021年1月_P: 45.45454545454545
2021年2月_P: 30.303030303030305
2021年1月_U: 10
2021年2月_U: 10
2021年2月_N: 33
2021年1月_N: 22
```
可以看到,相同年月的后缀为U的value乘以100,除以相同年份后缀为N的值,并赋值给相同年份后缀为P的元素。运算时进行了非空校验。注意Map中的元素顺序可能与添加顺序不一致,这是因为HashMap不保证元素的顺序。
阅读全文