Java集合框架

在实际开发中,需要将使用的对象存储于特定数据结构的容器中。JDK提供了这样的容器—集合。

Collection是一个接口,定义了集合相关的操作方法。

其派生了两个子接口:
* List: 可重复集
* Set: 不可重复集
元素是否重复是依靠元素自身equals方法比较的结果而定的。

集合中存储的都是引用类型元素,并且集合只保存每个元素对象的引用,而并非将元素对象本身存入集合。

public class CollectionDemo1 {

    public static void main(String[] args) {

        Collection c = new ArrayList();

        /*
         * boolean add(E e)
         * 向集合中添加元素。
         * 当元素成功添加到集合后返回true 
         */
        c.add("one");
        c.add("two");
        c.add("three");
        System.out.println(c);

        /*
         * int size()
         * 返回当前集合的元素个数 
         */
        System.out.println("size:"+c.size());

        /*
         * boolean isEmpty()
         * 判断当前集合是否不含有任何元素
         * 空集合
         */
        boolean isEmpty = c.isEmpty();
        System.out.println("是否是空集:"+isEmpty);

        /*
         * void clear()
         * 清空集合元素
         */
        System.out.println("清空集合");
        c.clear();
        System.out.println("size:"+c.size());

        /*
         * 集合判断是否包含指定元素是依靠元素的equals比较的结果。
         * 只要集合中有元素与给定元素比较为true,则认为包含。 
         */
        boolean contains = c.contains("one");
        System.out.println("包含:"+contains);

        /*
         * boolean remove(E e);
         * 从集合中删除指定元素。删除成功返回true
         * 只删除集合中第一个与给定元素equals比较为true的元素
         */
        c.remove("one");
        System.out.println(c);

        //==================   集合的批量操作  ===================

        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("c++");
        c1.add(".net");
        System.out.println(c1);

        Collection c2 = new HashSet();
        c2.add("ios");
        c2.add("android");
        c2.add("linux");
        System.out.println(c2);

        /*
         * 取并集
         * boolean addAll(Collection c)
         * 将给定集合中的所有元素添加到当前集合中
         * 添加后只要当前集合元素数量发生了变化,则返回true 
         */
        boolean flag = c1.addAll(c2);
        System.out.println(c1);
        System.out.println(flag);

        Collection c3 = new ArrayList();
        c3.add("java");
        c3.add("c++");
        c3.add("windows");
        /*
         * boolean containsAll(Collection c) 
         * 判断当前集合是否包含给定集合中的所有元素
         */
        boolean contains = c1.containsAll(c3);
        System.out.println("全包含:"+contains);

        /*
         * 从c1集合中删除两个集合中共有的元素 
         */
        c1.removeAll(c3);
        System.out.println(c1);
    }

}

迭代器:

/**
 * 遍历集合
 * Collection提供了统一的遍历元素的方式:迭代器模式
 * 
 *  Iterator iterator()
 *  获取用于遍历当前集合的迭代器
 *  
 *  java.util.Iterator是一个接口,规定了用于遍历集合元素的相关方法,
 *  不同的集合提供了相应的实现类。无需记住那些实现类的名字,只将他们当做Iterator即可。
 *  
 *  遍历集合遵循:问,取,删的步骤,其中删除不是必须的操作。
 */
public class CollectionDemo2 {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        //获取用于遍历当前集合的迭代器
        Iterator it = c.iterator();
        /*
         * boolean hasNext() 问的过程
         * 该方法是判断集合中是否还有元素可以取出
         * 
         * E next() 取的过程
         * 获取集合中下一个元素
         */
        while(it.hasNext()){
            String str = (String) it.next();
            if("#".equals(str)){
                /*
                 * 在使用迭代器遍历集合时,不要使用集合的方法增删元素,否则会引发并发更改异常。 
                 */
                //c.remove(str);

                /*
                 * 迭代器提供了remove方法,用来删除next方法取出的元素。 
                 */
                it.remove();
            }
            System.out.println(str);
        }

        System.out.println(c);
    }

}

集合对泛型的支持


/**
 * 集合支持泛型,而泛型是用来约束集合中元素的类型。 
 */
public class CollectionDemo3 {

    public static void main(String[] args) {
        Collection<String> c = new ArrayList<String>();
        //只能添加String类型的元素
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");

        //遍历集合元素
        for(String str:c){
            System.out.println(str);
        }
        /*
         * 迭代器也应当指定泛型,而泛型的实际类型
         * 应当与它遍历的集合的泛型类型一致。 
         */
        Iterator<String> it = c.iterator();
        while(it.hasNext()){
            //获取元素时不需要再造型了
            String str = it.next();
            System.out.println(str);
        }

    }

}

增强型for循环

public class NewForDemo {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        System.out.println(c);
        /*
         * 新循环并非新的语法,新循环是编译器认可,而不是虚拟机认可。
         * 使用新循环遍历集合时,编译器会将它改为迭代器方式遍历。
         * 所以在使用新循环遍历集合时,不能通过集合的方法增删元素。 
         */
        for(Object o:c){
        //Iterator it = c.iterator();
        //while(it.hasNext()) {
        //  Object o = it.next();

            String str = (String)o;
            System.out.println(str);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值