Collection集合

Collection集合
Collection集合
Collection集合
Collection集合
Collection集合

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * ctrl + alt + m 可以抽取一段代码为一个方法
 * 迭代器和增强for循环的使用
 * 只有单列集合Collection才能使用迭代器,因为其继承了 Iterator
 * 双列集合为 Map类型的集合,可以简单理解为有键值对出现的集合 Map<key,value>
 *     三种循环的使用场景:
 *     1、需要操作索引,使用普通for循环
 *     2、在遍历过程中需要删除元素,使用迭代器
 *     3、仅仅是遍历元素,使用增强for循环
 */

public class UseIterator {

    public static void main(String[] args) {
        Collection list = getCollection();
        ArrayList list2 = (ArrayList) getCollection();
        method1(list);
        method2(list);
        method3(list2);
    }

    private static Collection getCollection() {
        //这里注意Collection是接口,不能直接new,需要用其实现类
        Collection list = new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("bbb");
        list.add("ccc");
        list.add("ccc");
        list.add("ddd");
        return list;
    }

    private static void method1(Collection list) {
        /**快捷生成方式 增强for循环: list.for 回车即可
         * 数据类型一定是集合或者数组中元素的类型
         * obj为循环中的变量名
         * list未要遍历的目标数组或目标集合
         */
        for (Object obj:list) {
            //修改第三方变量的值,不会影响原集合中的元素
            obj = "qq";
            System.out.println(obj);
        }
        System.out.println(list);
        System.out.println("==============");
    }

    private static void method2(Collection list) {
        //迭代器遍历Collection集合里的元素
        //创建迭代器,默认指向 0 索引
        Iterator it = list.iterator();
        //使用 hasNext 判断集合中当前位置是否有元素可以取出;
        while (it.hasNext()){
            //用 next 取出当前位置的元素、并将迭代器对象移向下一个索引位置(即往后移动到下一个下标)
            Object element = it.next();
            System.out.println(element);
            //删除集合中的指定元素
            if ("bbb".equals(element)){
                //remove方法:下标指到谁就删除谁
                it.remove();
            }
        }
        System.out.println(list);
        System.out.println("==============");
    }

    private static void method3(ArrayList list2) {
        for (int i = 0; i < list2.size(); i++) {
            Object obj = list2.get(i);
            if ("ccc".equals(obj)){
                list2.remove(i);
                //这里需要i--,是因为集合的大小是动态的,当删除掉前面一个元素后,后面的元素会整体往前移动一位,
                //即后一位元素的下标会往前移动一位,
                //如果删除后不加 i-- ,则普通for循环会因为条件中 i++ 的原因把下标继续往后移动一位后,从而导致符合条件的重复元素没删除
                i--;
            }
        }
        System.out.println(list2);
        System.out.println("==============");
    }

}

Collection集合

上一篇:Linux alias命令


下一篇:持续集成环境(5)-Maven安装和配置(on)