zoukankan      html  css  js  c++  java
  • 三十一、Java基础之Collection集合

    一、Collection集合

    /**
     * Collection基本操作:
     * 1.boolean add(E e):向集合中添加元素e
     * 2.boolean addAll(Collection<? extends E> c):把集合c中所有的元素都添加到当前集合中
     * 3.void clear()清空当前集合中所有的元素
     * 4.boolean contain(Object o):在当前集合中判断是否包含了元素0
     * 5.boolean containAll(Collection<?> c):判断当前集合是否包含集合C中的所有元素
     * 6.boolean isEmpty():判断集合是否为空
     * 7.Iterator<E> iterator():返回当前集合的迭代器
     * 8.boolean remove(Object 0):从当前集合中删除第一个与0匹配的元素
     * 9.boolean removeAll(Collection<?> c):在当前集合中删除在c集合中出现的所有元素
     * 10.int size():返回集合的元素的个数
     * 11.Object[] toArray():把集合转化为数组
     */

    二、代码演示

    1.Collection接口

    import java.util.ArrayList;
    import java.util.Collection;
    public class Test01 {
    
        public static void main(String[] args){
    
            //1、创建Collection集合,Collection是一个接口,需要赋值实现类对象
            Collection collection = new ArrayList<>();
    
            //2、向集合中添加元素,默认添加Object类型的
            //如果添加基本类型,系统会自动装箱,把包装类对象添加到集合中
            collection.add("aaa");
            collection.add("bbb");
            collection.add(123);
            collection.add(true);
    
    
            //3、直接打印,collection引用的是ArrayList对象,ArrayList的爷爷类是AbstractCollection重写了toString()方法
            System.out.println(collection);//[aaa, bbb, 123, true]
    
            //4、判断
            System.out.println(collection.isEmpty());
            System.out.println(collection.size());
            System.out.println(collection.contains("bbb"));
    
    
            //5、删除
            collection.remove("bbb");
            System.out.println(collection);
    
    
    
    
        }
    }
    2.一个集合中一般只存储同一类型的数据,可以在定义集合时,通过泛型约束集合中元素的类型
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Test02 {
    
        public static void main(String[] args){
    
            //1、在实际应用中,一个集合中一般只存储同一类型的数据,可以在定义集合时,通过泛型约束集合中元素的类型
            //Collection后面的尖括弧指定集合元素类型,就是泛型,泛型就是把数据类型当作参数
            Collection<String> collection = new ArrayList<>();
    
            //添加元素时,collection集合就只能添加String类型的数据
            collection.add("aa");
            collection.add("bb");
            collection.add("cc");
            collection.add("dd");
            //collection.add(123);//Error:(20, 24) java: 不兼容的类型: int无法转换为java.lang.String
    
            collection.add("cc");
            collection.add("dd");
            System.out.println(collection);//[aa, bb, cc, dd, cc, dd]
    
            //删除cc,remove()只删除第一个匹配的元素
            collection.remove("cc");
            System.out.println(collection);
    
            //创建第二个集合
            Collection<String> collection1 = new ArrayList<>();
            collection1.addAll(collection);//把collection中的所有元素添加到当前集合中
            System.out.println(collection1);
            collection1.remove("dd");
            System.out.println(collection1);//[aa, bb, cc, dd]
    
            //判断colletion集合汇总是否包含collection1集合中所有的元素
            System.out.println(collection.containsAll(collection1));//true
            System.out.println(collection1.containsAll(collection));//true
    
            //在collection中删除collection1中的所有元素
            collection.removeAll(collection1);
            System.out.println(collection);            //[]
    
    
    
    
    
        }
    }

    3.迭代器

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class Test03 {
    
        public static void main(String[] args){
    
            //1、创建一个存储String字符串的Collection的集合
            Collection<String> collection = new ArrayList<>();
    
            //2、添加元素
            collection.add("gg");
            collection.add("jj");
            collection.add("dd");
            collection.add("jj");
            collection.add("dd");
            collection.add("jj");
            collection.add("mm");
    
            //3、打印
            System.out.println(collection);//[gg, jj, dd, jj, dd, jj, mm]
    
            //4、遍历
    //        for (String str :collection) {
    //            System.out.println(str);
    //        }
    
            //5、删除所有的dd
            //collection.remove("dd");//删除第一个匹配的元素
    
            /*for (String string:collection) {
                if("dd".euqals(string)){
                    collection.remove("dd");
                }
            }*/
    
            //6、迭代器遍历
            //6.1获得迭代器对象
            Iterator<String> iterator = collection.iterator();
            /**
             * iterator.hasNext() 用于判断是够还有下个元素没访问
             * iterator.next()    返回下个元素,游标下移
             * 刚刚获得迭代器时,迭代器的游标指向第一个元素的前面
             */
    
            while(iterator.hasNext()){
                String string = iterator.next();
                if ("dd".equals(string)){
                    iterator.remove();
                }
            }
            System.out.println(collection);
    
    
            //7、重新获得迭代器,游标指向第一个元素的前面
            iterator = collection.iterator();
    
            //获得迭代器后,如果再通过集合的add,remove,clear等方法修改了集合的结构,在迭代时可能会产生异常
            //获得迭代器后,不能再通过集合的add,remove,clear等方法修改了集合的结构
            //可以通过集合的add,remove,clear等方法修改集合的结构后,重新获得迭代器对象
            //collection.add("jj");
            while(iterator.hasNext()){
                String str = iterator.next();
                //System.out.println(str);//java.util.ConcurrentModificationException
                if ("jj".equals(str)){
                    //collection.remove("jj");//java.util.ConcurrentModificationException
                }
            }
    
        }
    }

      三、Collections工具类简单介绍

    /**
     * java.util.Collections工具类,该工具类有一组方法,synchronizedxx(xxx)可以把xxx
     *  集合转化为县城安全的集合
     *
     *
     *static <T> Collection<T>    synchronizedCollection(Collection<T> c)
     *
     * static <T> List<T>    synchronizedList(List<T> list)
     *
     *
     *static <K,V> Map<K,V>    synchronizedMap(Map<K,V> m)
     *
     *
     *static <T> Set<T>    synchronizedSet(Set<T> s)
     *
     *  但是我们在开发多线程程序时。基本不使用这一组操作,在多线程环境中,如果使用List集合就直接使用java.util.concurrent.CopyOnWriteArrayList<E>类
     *  如果使用Set集合不需要排序,使用java.util.concurrent.CopyOnWriteArraySet<E>;如果需要排序,使用java.util.concurrent.ConcurrentSkipListSet<E>;
     *
     *
     */
  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/chushujin/p/11078761.html
Copyright © 2011-2022 走看看