问题:
请问下面的那种方法能正确地把字符"B"从集合stringList中删除掉?
1 List<String> stringList = new ArrayList<String>();
2 stringList.add("A");
3 stringList.add("B");
4 stringList.add("C");
5 stringList.add("B");
6 stringList.add("D");
7 stringList.add("E");
8 stringList.add("B");
方法1:
1 for(Iterator<String> it =stringList.iterator(); it.hasNext();){
2 String s = it.next();
3 if (s.equals("B")) stringList.remove(s);
4 }
方法2:
1 for (String s : stringList) {
2 if (s.equals("B")) stringList.remove(s);
3 }
方法3:
1 for (Iterator<String> it = stringList.iterator(); it.hasNext();) {
2 String s = it.next();
3 if(s.equals("B")) it.remove();
4 }
方法4:
1 List<String> newList = new ArrayList<String>();
2 for(String s : stringList){
3 if (!s.equals("B")) newList.add(s);
4 }
5 stringList = newList;
方法5:
1 stringList.remove("B");
答案:方法3和方法4,方法1和2会抛出ConcurrentModificationException,方法5只能删掉第一个"B"字符