List遍历

来源:互联网 发布:蓝牙共享网络 上不了网 编辑:程序博客网 时间:2024/06/05 06:30

工作中用for遍历去除数据,发生了漏过滤现像,摆弄一下遍历:

import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ForTest {public static void main(String[] args) {test5();}/** * 警告:存在漏过滤数据情况 * 在遍历时,按照键的从小到大for (int i=0; i<list.size(); i++) *  * 理想情况下是所有带“a”的字符串都被去除,结果为: * [e] * 实际上结果为: * [ba, da, e] * 在遍历时,i是固定按次增加,list减少 */public static void test1(){List<String> list = new ArrayList<String>();list.add("a");list.add("ba");list.add("ca");list.add("da");list.add("e");for (int i=0; i<list.size(); i++) {String string = list.get(i);if(string != null && string.contains("a")){list.remove(i);}}System.out.println(list);}/** * 在遍历时,按照键的从小到大for (int i=0; i<list.size(); i++) *  * 理想情况下是所有带“a”的字符串都被去除,结果为: * [e] * 实际上结果为: * [e] */public static void test2(){List<String> list = new ArrayList<String>();list.add("a");list.add("ba");list.add("ca");list.add("da");list.add("e");for (int i=0; i<list.size(); i++) {String string = list.get(i);if(string != null && string.contains("a")){list.remove(i);i -= 1;}}System.out.println(list);}/** * 在遍历时,按照键的从大到小for (int i=list.size()-1; i>-1; i--) *  * 理想情况下是所有带“a”的字符串都被去除,结果为: * [e] * 实际上结果为: * [e] */public static void test3(){List<String> list = new ArrayList<String>();list.add("a");list.add("ba");list.add("ca");list.add("da");list.add("e");for (int i=list.size()-1; i>-1; i--) {String string = list.get(i);if(string != null && string.contains("a")){list.remove(i);}}System.out.println(list);}/** * 在遍历时,使用Iterator listIterator = list.iterator();while (listIterator.hasNext()) *  * 理想情况下是所有带“a”的字符串都被去除,结果为: * [e] * 实际上结果为: * [e] */public static void test4(){List<String> list = new ArrayList<String>();list.add("a");list.add("ba");list.add("ca");list.add("da");list.add("e");Iterator listIterator = list.iterator();while (listIterator.hasNext()) {String string = (String) listIterator.next();System.out.println(string);if(string.contains("a")){listIterator.remove();}}System.out.println(list);}/** * 在任意方式遍历时,把需要的数据放到新的返回list中获取需要数据 *  * 理想情况下是所有带“a”的字符串都被去除,结果为: * [e] * 实际上结果为: * [e] */public static void test5(){List<String> list = new ArrayList<String>();List<String> respList = new ArrayList<String>();List<String> respList1 = new ArrayList<String>();list.add("a");list.add("ba");list.add("ca");list.add("da");list.add("e");for (String string : list) {if(string != null && string.contains("a")){respList.add(string);}else{respList1.add(string);}}System.out.println(list);System.out.println(respList);System.out.println(respList1);}}

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充;转载请注明出处!

原创粉丝点击