数组中删除某个元素/数组转集合/java.lang.UnsupportedOperationException 异常分析

//创建一个数组
String[] arr = new String[] { "1", "2", "3" };
//将数组转成集合
List<String> list = Arrays.asList(arr);
// 此步骤是防止遍历删除时报错,上一步的list是数组转换的 ,Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove
// 操作。
// Arrays.asList(arr) 返回的类型是 Aarrays$ArrayList 并不是 ArrayList,Aarrays$ArrayList 和
// ArrayList 都继承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接抛出
// UnsupportedOperationException,并没有直接实现。
// ArrayList 重写了 add 方法和 remove 方法,能够进行对应的添加和删除操作,Aarrays$ArrayList
// 却没有去重写,所以此时调用 add 方法和 remove 方法会抛出 UnsupportedOperationException。
list = new ArrayList<String>(list);
for (int i = 0; i < list.size(); i++) {
	if (list.get(i).equals("2")) {
		list.remove(i);
	}
}
//将集合转换成以逗号分隔的字符串
String listStr = String.join(",", list);
System.out.println(listStr);

有关java.lang.UnsupportedOperationException 异常的详细说明

https://www.jianshu.com/p/7f718d900111

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章