java.lang.UnsupportedOperationException

发布时间:2024年01月15日

刚开始是这样写的然后报错,我以为是迭代器的原因

public static void main(String[] args) {
		List<String> strings = Arrays.asList("aa", "bb", "cc");
		for (String string : strings) {
			strings.removeIf(str -> str.equals("bb"));
		}
		System.out.println(strings);
	}

改了下发现还是报错

public static void main(String[] args) {
		List<String> strings = Arrays.asList("aa", "bb", "cc");
		Iterator<String> iterator = strings.iterator();
		while (iterator.hasNext()) {
			String string = iterator.next();
			if (string.equals("bb")) {
				iterator.remove();
			}
		}
		System.out.println(strings);
	}

最后才知道

Arrays.asList 返回的是一个不可变的列表,因此无法修改。你可以将其转换为可变的列表,然后再删除元素,简单来讲就是new一个新的列表即可。下面是解决后的代码,这里的for循环没有任何意义,只是复现一下当时是遍历一个dto集合拿id进行比对。

public static void main(String[] args) {
		List<String> strings = Arrays.asList("aa", "bb", "cc");
		ArrayList<String> list = new ArrayList<>(strings);
		for (String string : strings) {
			list.removeIf(str -> str.equals("bb"));
		}
		System.out.println(list);
	}

文章来源:https://blog.csdn.net/qq_58389625/article/details/135599583
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。