集合foreach循环和三种迭代的删除
2017-05-10 12:40
281 查看
增强for—foreach循环
* 简化数组和Collection集合的遍历
格式: for(元素数据类型 变量 : 数组或者Collection集合) { 使用变量即可,该变量就是元素 } 好处 * 简化遍历
三种迭代的能否删除
import java.util.ArrayList;import java.util.Iterator;
import bean.Person;
public class g {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {11,22,33,44,55};
for (int i : arr) {
System.out.println(i);
}
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
for (String string : list) {
System.out.println(string);
}
ArrayList<Person> alist = new ArrayList<>();
alist.add(new Person("张三", 23));
alist.add(new Person("李四", 24));
alist.add(new Person("王五", 25));
alist.add(new Person("赵六", 26));
for (Person person : alist) {
System.out.println(person);
}
ArrayList<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");
list1.add("d");
//1,普通for循环删除
for(int i = 0; i < list1.size(); i++) {
if("b".equals(list1.get(i))) {
list1.remove(i);//通过索引删除元素
}
}
System.out.println(list1);//[a, c, d]
ArrayList<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("b");
list2.add("c");
list2.add("d");
list2.add("e");
list2.add("f");
list2.add("g");
//1,普通for循环删除,索引要--
for(int i = 0; i < list2.size(); i++) {
if("b".equals(list2.get(i))) {
list2.remove(i);//通过索引删除元素
//当删除索引为1的b时,此刻后面的索引全部向前走第二个索引为2的b向前一步他的索引即变为1
//此刻i的值为1,执行后i++变为2,即后来索引为1的b不被判断
//应该list2.remove(i--);
}
}
System.out.println(list2);//[a, b, c, d]
//2,迭代器删除
Iterator<String> it = list2.iterator();
while(it.hasNext()) {
if("e".equals(it.next())) {
//list2.remove("e");
//不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
// java.util.ConcurrentModificationException
it.remove();
}
}
System.out.println(list2);//[a, b, c, d, f, g]
//第二种
for(Iterator<String> it2 = list2.iterator(); it2.hasNext();) {
if("f".equals(it2.next())) {
//list.remove("f");//不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
it2.remove();
}
}
System.out.println(list2);//[a, b, c, d, g]
//3,增强for循环,增强for循环不能删除,只能遍历
for (String string : list) {
if("d".equals(string)) {
//list2.remove("d");
}
}
System.out.println(list2);
}
}
相关文章推荐
- 删除正在循环迭代的集合元素的分析
- foreach循环删除集合中的元素出现ConcurrentModificationException异常(补充)
- MyBatis foreach标签循环迭代集合对象实现批量删除
- 集合已修改;枚举操作可能无法执行。使用foreach 循环删除DataRow的时候的问题! 该死的AcceptChanges() Row.elete() Remove(Row)使用不同。
- java集合中用foreach快速遍历以及通过迭代的删除
- JAVA循环迭代中删除或添加集合数据报java.util.ConcurrentModificationException错误
- foreach循环删除集合中的元素出现ConcurrentModificationException异常
- Windows Phone开发之集合List和Foreach循环
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- Java中如何循环删除一个集合(如List)中的多个元素
- Java中如何循环删除一个集合(如List)中的多个元素
- 循环的时候如何安全地删除java集合的元素
- Java中如何循环删除一个集合(如List)中的多个元素
- IEnumerable 接口---实现该接口里的成员的类,可以使用foreach循环访问集合
- HashMap集合的三种迭代方法
- 自定义标签的开发及使用自定义标签实现迭代foreach循环
- Java中如何循环删除一个集合(如List)中的多个元素
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- [MOSS开发]:对象集合的迭代选择foreach还是forloop
- 集合循环时删除元素