您的位置:首页 > 其它

集合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);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: