java.lang.UnsupportedOperationException

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

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

你可能感兴趣的:(问题总结,java,开发语言)