记录过程中出现的问题以及解决方法
1、error:Exception in thread "main" java.lang.UnsupportedOperationException
出现原因,Arrays.asList() 初始化方法不可用
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
Iterator<Integer> iterator = list.iterator();
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
for(Integer i : list1) {
System.out.println("\n循环层:" + i);
while(iterator.hasNext()) {
Integer tmp = iterator.next();
System.out.print(tmp + ",");
if(tmp == i) {
System.out.println("删除元素:"+i);
iterator.remove();
}
}
}
解决:Arrays.asList()改成new ArrayList() add元素
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
list.add(9);
Iterator<Integer> iterator = list.iterator();
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
for(Integer i : list1) {
System.out.println("\n循环层:" + i);
while(iterator.hasNext()) {
Integer tmp = iterator.next();
System.out.print(tmp + ",");
if(tmp == i) {
System.out.println("删除元素:"+i);
iterator.remove();
}
}
}
2、error: 没有任何的报错信息,当进入第一层循环层时,删除了元素,第二层循环进来的时候iterator里面还有值长度为8,方法hasNext()为false,结果如图所示:
解决办法:iterator放在for循环体内
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
list.add(9);
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
for(Integer i : list1) {
Iterator<Integer> iterator = list.iterator();
System.out.println("\n循环层:" + i);
while(iterator.hasNext()) {
Integer tmp = iterator.next();
System.out.print(tmp + ",");
if(tmp == i) {
System.out.println("删除元素:"+i);
iterator.remove();
}
}
}
得到想要的结果如下图: