List数组遍历删除
环境
- jdk8
- junit 单元测试
正解
1// 正解1, jdk自带的addAll方法 2 @Test 3 public void test18() { 4 String[] strs = {"12","34","56","78","90"}; 5 List<String> list = Arrays.asList(strs); 6 List<String> list2 = new ArrayList<>(); 7 list2.addAll(list); 8 System.out.println(list); 9 for (String s : list) { 10 System.out.println(s); 11 list2.remove(s); 12 } 13 } 14 15// 正解2 Hutool的 CollUtil 工具类中addAll方法 16 @Test 17 public void test18() { 18 String[] strs = {"12","34","56","78","90"}; 19 List<String> list = Arrays.asList(strs); 20 List<String> list2 = new ArrayList<>(); 21 CollUtil.addAll(list2,list); 22 System.out.println(list2); 23 for (String s : list) { 24 System.out.println(s); 25 list2.remove(s); 26 } 27 } 28 29boolean b = list1.removeIf(a -> (a % 2) == 0); 30 System.out.println(b);
错解
新手代码踩坑日记
1// 第一错 2 @Test 3 public void test18() { 4 String[] strs = {"12","34","56","78","90"}; 5 List<String> list = Arrays.asList(strs); 6 System.out.println(list); 7 for (String s : list) { 8 System.out.println(s); 9 list.remove(s); 10 } 11 } 12 13报错信息: 14 15[12, 34, 56, 78, 90] 1612 17 18java.lang.UnsupportedOperationException 不支持的操作异常 19 at java.util.AbstractList.remove(AbstractList.java:161) 20 at java.util.AbstractList$Itr.remove(AbstractList.java:374) 21 at java.util.AbstractCollection.remove(AbstractCollection.java:293) 22 23 24// 第二错 : 老子新建个对象来存还是错??? 仔细想想-->TMD谁写的垃圾代码,好像是我写的... 25// 方法栈里面就一个list对象,只是复制一份引用,而remove是直接操作数组内存空间 26 @Test 27 public void test18() { 28 String[] strs = {"12","34","56","78","90"}; 29 List<String> list = Arrays.asList(strs); 30 List<String> list2 = new ArrayList<>(); 31 list2 = list; 32 System.out.println(list); 33 for (String s : list) { 34 System.out.println(s); 35 list2.remove(s); 36 } 37 } 38 39直接报错 +1: 40[12, 34, 56, 78, 90] 4112 42 43java.lang.UnsupportedOperationException 44 at java.util.AbstractList.remove(AbstractList.java:161) 45 at java.util.AbstractList$Itr.remove(AbstractList.java:374) 46 at java.util.AbstractCollection.remove(AbstractCollection.java:293) 47
