一个List,如何删除其中不想要的元素

一个List,怎么删除其中不想要的元素
对于一个List怎么删除不想要的元素,这样写为什么会报错呢

Java code

List list = new ArrayList<String>();
for(String str:list){
  if(str.length()<5){
     list.remove(str);
  }
}



上述代码报错是为什么呢?

------解决方案--------------------
1.用迭代器的remove方法删除。
2.从后面删除

  List<String> list = new ArrayList<String>();

for (int i = list.size() - 1; i >= 0; i--) {
String str = list.get(i);
if (str.length() < 5) {
list.remove(str);
}
}
------解决方案--------------------
探讨

我用的时6楼的方法一,可以解决问题
有哪位大侠知道,出现这种情况的原因吗?
还有为什么,用Iterator的remove()方面能解决问题呢?