Arrays.asList的替代方法
时间: 2023-08-07 14:02:35 浏览: 73
`Arrays.asList()`是Java中的一个方法,它可以将数组转换为List对象。例如,如果您有一个int类型的数组,您可以使用`Arrays.asList()`方法将其转换为一个Integer类型的List对象。
以下是一个示例代码,演示如何使用`Arrays.asList()`方法:
```java
int[] array = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(array);
```
在上面的代码中,我们定义了一个名为array的int类型数组,并使用`Arrays.asList()`方法将其转换为一个Integer类型的List对象。现在,我们可以对List对象进行各种操作,例如添加或删除元素。
需要注意的是,由于`Arrays.asList()`方法返回的是一个固定长度的List对象,因此在使用该方法转换数组时,请确保您不会尝试添加或删除元素,否则会导致`UnsupportedOperationException`异常。
相关问题
public void method2() { //创建竖直 List<Integer> list = createList(); //检查数组是否为空 log.info("list是否为空:" + CollectionUtils.isEmpty(list)); //检查数组中是否存在某些值,如:banana String[] fruits = {"apple", "orange", "banana"}; log.info("集合是否存在banana:" + CollectionUtils.exists(Arrays.asList(fruits), new Predicate() { @Override public boolean evaluate(Object o) { return "banana".equalsIgnoreCase((String) o); } })); //将数组2并入数组1 String[] newFruits = {"peach", "grape", "banana"}; CollectionUtils.addAll(Arrays.asList(fruits), newFruits); log.info("合并后的集合:" + Arrays.toString(fruits)); }
根据你提供的代码,我注意到问题出现在`CollectionUtils.addAll`方法上。该方法的目的是将`newFruits`数组中的元素添加到`fruits`列表中,但是在你的代码中,你将`Arrays.asList(fruits)`作为参数传递给了`CollectionUtils.addAll`方法。
问题在于`Arrays.asList`方法返回的是一个固定大小的列表,不支持添加操作。因此,当你尝试通过`CollectionUtils.addAll`方法向该列表中添加元素时,会抛出`UnsupportedOperationException`异常。
要解决这个问题,你可以使用一个可变列表来存储`fruits`数组的元素,并将其作为参数传递给`CollectionUtils.addAll`方法。例如,你可以使用`ArrayList`来替代`Arrays.asList`,如下所示:
```java
List<String> fruitList = new ArrayList<>(Arrays.asList(fruits));
CollectionUtils.addAll(fruitList, newFruits);
```
这样做将创建一个可变的列表,并成功将`newFruits`数组的元素添加到该列表中,而不会抛出异常。
希望这可以帮助你解决问题!如果还有其他问题,请随时提问。
if (names.contains(",")) { nameList = Arrays.asList(names.split(",")); noMatchList.addAll(nameList); // 获取重复内容 Map<String, Integer> map = new HashMap<>(); for (String str : nameList) { int i = 1; if (map.get(str) != null) { i = map.get(str) + 1; } map.put(str, i); } for (String s : map.keySet()) { if (map.get(s) > 1) { repeatList.add(s); repeatSize += map.get(s) - 1; } } } else { nameList.add(names); noMatchList.addAll(nameList); }优化代码
根据您提供的代码,我看到其中可以进行如下优化:
1. 可以使用Java 8的Stream API替代for循环,使代码更加简洁,同时也提高了可读性。
2. 可以使用Java 8的Optional类来简化代码。
下面是优化后的代码:
```
List<String> nameList = Arrays.asList(names.split(","));
noMatchList.addAll(nameList);
// 获取重复内容
Map<String, Long> map = nameList.stream().collect(Collectors.groupingBy(s -> s, Collectors.counting()));
List<String> repeatList = map.entrySet().stream().filter(entry -> entry.getValue() > 1).map(Map.Entry::getKey).collect(Collectors.toList());
int repeatSize = repeatList.stream().mapToInt(s -> Math.toIntExact(map.get(s) - 1)).sum();
```
注:由于不知道您代码中的数据类型,上面的代码仅供参考。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)