List<Integer> list1=map.getOrDefault(i,new ArrayList<Integer>);这段代码的问题
时间: 2023-04-06 13:03:26 浏览: 109
这段代码的问题在于,getOrDefault()方法的第二个参数应该是一个Integer类型的默认值,而不是一个ArrayList<Integer>类型的默认值。正确的写法应该是:List<Integer> list1 = map.getOrDefault(i, new ArrayList<>());
相关问题
优化一下Java代码 if (nmAttrNameIdMap.containsKey(attrName)) { List<Integer> attrIds = boardMode2AttributeIdsMap.getOrDefault(String.valueOf(boardMode), new ArrayList<>()); attrIds.add(nmAttrNameIdMap.get(attrName)); boardMode2AttributeIdsMap.put(String.valueOf(boardMode), attrIds); }
根据您提供的代码,我认为可以进行如下优化:
1. 使用Java8的新特性,如Lambda表达式和Optional类,使代码更加简洁易读。
2. 使用更有意义的变量名,以提高代码的可读性。
3. 使用局部变量存储重复使用的值,以提高代码的效率。
4. 在条件判断中使用Optional类的map()方法,避免了使用containsKey()方法。
优化后的代码如下所示:
```java
Optional<Integer> attributeId = nmAttrNameIdMap
.map(map -> map.get(attrName));
if (attributeId.isPresent()) {
List<Integer> attributeIds = boardModeToAttributeIdsMap
.computeIfAbsent(String.valueOf(boardMode), k -> new ArrayList<>());
attributeIds.add(attributeId.get());
}
```
以上代码的优化点如下:
1. 使用了Optional类的map()方法代替了原代码中的containsKey()方法,使代码更加简洁易读。
2. 使用了`attributeName`代替了原代码中的`attrName`,以更好地表达变量的含义。
3. 使用了`attributeId`代替了原代码中的`attrIds`,以更好地表达变量的含义。
4. 使用了`computeIfAbsent()`方法,使代码更加简洁易读。
希望以上优化对您有所帮助。
ArrayList<Map> list = new ArrayList<Integer>(??);
在这种情况下,您不能直接将一个 ArrayList<Integer> 赋值给 ArrayList<Map>,因为它们之间没有直接的继承关系。如果您想要创建一个 ArrayList<Map>,您需要创建一个 Map 对象,并将其添加到 ArrayList 中。下面是一个示例代码:
```
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key1", 1);
map.put("key2", 2);
ArrayList<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
list.add(map);
```
该代码创建了一个包含键值对("key1":1、"key2":2)的 Map 对象,并将其添加到 ArrayList 中。请注意,这里的 ArrayList 的泛型参数为 Map<String, Integer>,因为我们使用的是键为 String 类型,值为 Integer 类型的 Map。
如果您想要创建一个 ArrayList,其中每个元素都是一个包含键值对的 Map 对象,您可以在创建 ArrayList 的同时添加多个 Map 对象,如下所示:
```
ArrayList<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
list.add(new HashMap<String, Integer>() {{
put("key1", 1);
put("key2", 2);
}});
list.add(new HashMap<String, Integer>() {{
put("key3", 3);
put("key4", 4);
}});
```
这里我们使用了匿名内部类的方式创建了两个 Map 对象,并将其添加到 ArrayList 中。