The method getOrDefault(Object, List<String>) in the type Map<Character,List<String>> is not applicable for the arguments (char, new HashSet<>())
时间: 2023-11-11 09:25:34 浏览: 141
这个错误是因为在使用 `getOrDefault()` 方法时,第二个参数的类型应该是 `List<String>`,但是你传递了一个 `HashSet<String>` 类型的对象。你可以将 `idiomSet` 的类型从 `HashSet<String>` 改为 `ArrayList<String>`,或者使用 `Collections.singleton(idiom)` 方法将成语转换为只包含一个元素的 Set,再将 Set 转换为 List,如下所示:
```java
List<String> idiomList = new ArrayList<>();
Map<Character, List<String>> idiomMap = new HashMap<>();
for (String idiom : idiomList) {
if (!idiom.isEmpty()) {
char lastChar = idiom.charAt(idiom.length() - 1);
List<String> idiomSet = idiomMap.getOrDefault(lastChar, new ArrayList<>());
idiomSet.addAll(Collections.singleton(idiom));
idiomMap.put(lastChar, idiomSet);
}
}
```
这样就可以解决这个错误了。
相关问题
The method deleteItems(List<String>) in the type StudentDao is not applicable for the arguments (List<Integer>)
这个错误是因为你试图将一个整数类型的列表传递给一个只接受字符串类型列表的方法。你需要将整数类型的列表转换为字符串类型的列表,或者在方法中定义一个接受整数类型列表的重载方法。你可以使用Java 8的Stream API将整数类型的列表转换为字符串类型的列表,示例如下:
```
List<Integer> intList = Arrays.asList(1, 2, 3);
List<String> strList = intList.stream().map(Object::toString).collect(Collectors.toList());
studentDao.deleteItems(strList);
```
The method sort(List<T>) in the type Collections is not applicable for the arguments (List<Number>)
这个错误可能是因为 `List<Number>` 中的元素类型 `Number` 并没有实现 `Comparable` 接口,导致 `Collections.sort()` 方法无法对其进行排序。解决这个问题的方法是在调用 `sort()` 方法时,传入一个 `Comparator` 对象,该对象定义了元素的比较规则。具体实现如下:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortArrayList {
public static void sort(List<Number> list) {
Collections.sort(list, new Comparator<Number>() {
@Override
public int compare(Number o1, Number o2) {
return Double.compare(o1.doubleValue(), o2.doubleValue());
}
});
}
}
```
在上面的代码中,我们先将传入的 `List<Number>` 直接传递给 `Collections.sort()` 方法中。然后,我们创建了一个匿名内部类实现了 `Comparator<Number>` 接口,重写了其 `compare()` 方法,定义了 `Number` 元素的比较规则。在这里,我们使用 `o1.doubleValue()` 和 `o2.doubleValue()` 方法获取 `Number` 元素的 double 值,然后使用 `Double.compare()` 方法进行比较。最终返回一个排好序的 `List<Number>`。
阅读全文