List<String> list = Arrays.asList(arr);Arrays报错 List<String> list = Arrays.asList(arr); List<String> list = Arrays.asList(arr);
时间: 2023-11-28 13:43:16 浏览: 112
Arrays.asList()方法返回的是一个固定大小的List,不能进行添加或删除操作,只能进行修改操作。如果你想要一个可变的List,可以使用java.util.ArrayList来代替Arrays.asList()方法返回的List。如果你使用Arrays.asList()方法将int[]转成ArrayList,会出现类型不匹配的错误,因为Arrays.asList()方法只能将数组转换为List<Object>类型,而int[]是一个基本数据类型,不是一个对象。如果你想要将int[]转换为List<Integer>类型的ArrayList,可以使用Java 8中的IntStream来实现,例如:
```java
int[] arr = {1, 2, 3};
List<Integer> list = IntStream.of(arr).boxed().collect(Collectors.toList());
```
相关问题
Line 4: error: incompatible types: inference variable T has incompatible bounds set.addAll(Arrays.asList(arr)); ^ lower bounds: Integer,Object lower bounds: int[] where T is a type-variable: T extends Object declared in method <T>asList(T...)
这个错误是由于 `Arrays.asList` 方法的参数类型不匹配导致的。
`Arrays.asList` 方法期望接收一个泛型参数 `T` 的可变参数,但在你的代码中,传入的是一个整型数组 `arr`,而不是整型对象。
为了解决这个问题,你可以将整型数组 `arr` 转换为整型对象数组,然后再将其传递给 `Arrays.asList` 方法。这样,就可以保证参数类型与方法的期望类型一致。
修改后的代码如下所示:
```java
set.addAll(Arrays.stream(arr).boxed().collect(Collectors.toList()));
```
在这个修改后的代码中,我们使用 `Arrays.stream(arr)` 将整型数组 `arr` 转换为流,并调用 `boxed()` 将流中的每个元素包装为对应的整型对象。然后,我们使用 `collect(Collectors.toList())` 将整型对象流收集为列表。最后,我们使用 `set.addAll` 将列表中的元素添加到集合中。
这样,你就可以解决“incompatible types: inference variable T has incompatible bounds”的错误。
public int countElements(int[] arr) { Set<Integer> set = new HashSet<>(); set.addAll(arr); }
在你的代码中,你定义了一个 `countElements` 方法,该方法接收一个整型数组 `arr` 作为参数,并返回一个整数。
在方法内部,你创建了一个 `HashSet` 集合,命名为 `set`,用于存储数组中的元素。然后,你使用 `addAll` 方法将整型数组 `arr` 中的元素添加到集合中。
如果你的目标是计算数组中不重复元素的个数,你可以在方法的最后返回 `set` 集合的大小,即 `set.size()`。修改后的代码如下所示:
```java
public int countElements(int[] arr) {
Set<Integer> set = new HashSet<>();
set.addAll(Arrays.asList(arr));
return set.size();
}
```
在这个修改后的代码中,我们使用 `Arrays.asList(arr)` 将整型数组 `arr` 转换为列表,并通过 `addAll` 方法将列表中的元素添加到 `set` 集合中。最后,我们返回 `set` 集合的大小作为结果。
这样,你就可以计算整型数组中不重复元素的个数了。
阅读全文