黑马程序员技术交流社区

标题: 去除集合中相同元素的三种遍历方式! [打印本页]

作者: 李志慧    时间: 2015-11-4 00:23
标题: 去除集合中相同元素的三种遍历方式!

import java.util.ArrayList;
import java.util.ListIterator;

public class Demo1_ArrayList {
       
        public static void main(String[] args) {
               
                /*
                 * 有一个集合,
                 * 假设里面有“bbb”  “ccc”  “abc”  “abc” “abc” “abc” “ooo”7个元素
                 * 要求,使用普通for循环去除其中的所有“abc” 尝试完成
                 */
                ArrayList<String> list = new ArrayList<String>();
               
                list.add("abc");
                list.add("abc");
                list.add("bbb");
                list.add("ccc");
                list.add("abc");
                list.add("abc");
                list.add("abc");
                list.add("abc");
                list.add("ooo");
                list.add("abc");
                list.add("abc");
               
                // 列表迭代器
//                ListIterator<String> it = list.listIterator();
//                while (it.hasNext()) {
//                        String s = it.next();
//                        if ("abc".equals(s)) {
//                                it.remove(); // 注意:用列表迭代器的删除功能
//                        }
//                }
               
               
               
                /*
                 * 正常遍历集合,判断遍历到的元素
                 * 这时一旦删除元素,集合长度会减1,循环索引加1后会有元素遗漏,遍历不到。
                 * 解决方案:删除一个元素,循环索引就减1.
                 */
               
//                for (int i = 0; i < list.size(); i++) {
//                        String s = (String) list.get(i);
//                        if ("abc".equals(s)) {
//                                list.remove(i);
//                                i--;
//                        }
//                }
               
                /*
                 * 方式2:将集合倒着遍历,判断元素并删除。
                 */
                for (int i = list.size() - 1; i >= 0; i--) {
                        String s = (String) list.get(i);
                        if ("abc".equals(s)) {
                                list.remove(i);
                        }
                }
               
                System.out.println("list:" + list);
                System.out.println(list.size());
               
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2