美文网首页
Collection 集合的定义和使用

Collection 集合的定义和使用

作者: 黑铁选手 | 来源:发表于2019-08-16 19:43 被阅读0次

    目的:

    掌握Collection集合的定义和使用方法

    相关技术、及其使用

    1、Collection集合的作用:可以定义一个随时改变的数组

    2、定义Collection集合的相关操作:
    Collection 抽象接口 定义集合的相关操作
    |-- List 列表 数组 接口 特点 :有序 可以重复
    |--ArrayList
    |-- LinkedArrayList
    |-- Set "集合" 特点 : 无序 不重复
    |---HashSet

    3、改变集合中的元素方法:
    增加一个对象 :add 在指定位置添加 add(i,o)

    //添加一个对象
            t1.add("jack");
            t1.add("Merry");
            System.out.println(t1);
            score.add(3);//在末尾添加
            score.add(0, 1);//在指定位置插入
    

    删除一个对象 : remove 移除指定位置的对象 remove(i,o)

            t1.remove("jack");
            score.remove(0);//删除指定位置的元素
            score.remove((Integer) 2);//删除指定的对象
    

    获取元素个数 :size

    System.out.println(t1.size());
    

    删除所有元素 ,清空 : clear

    t1.clear();
    

    判断某个集合中是否含有某个元素 :contains

      //判断是否包含一个元素
            if (t1.contains("Merry")) {
                System.out.println("有Meryy");
            } else {
                System.out.println("没有Meryy");
            }
    
    

    判断某个集合是否为空 : isEmpty

      //判断是否为空
            if (t1.isEmpty()) {
                System.out.println("是空的");
            }
    

    判断两个集合是否相同(比较两个集合里面地内容) : equals

       if (t1.equals(t2)) {
                System.out.println("两个集合相同");
            } else {
                System.out.println("两个集合不相同");
            }
    

    取两个集合的交集:retainAll

       ArrayList<Integer> a3 = new ArrayList<>();
            a3.add(1);
            a3.add(2);
            score.retainAll(a3);//取两个集合的交集
            System.out.println(a3);
    

    访问某个对象在某个位置的索引 :indexOf访问初始位置 lastIndexOf访问最后一次出现的位置

         ArrayList<Integer> a4 = new ArrayList<>();
            a4.add(1);
            a4.add(2);
            a4.add(2);
            a4.add(1);
            System.out.println(score.indexOf(1));//如果所访问的元素有多个相同值访问第一次出现的位置
            System.out.println(score.lastIndexOf(1));//最后一次出现的位置
    

    获取某个范围里面的对象 subList(i,o)

     List<Integer> integers = a4.subList(1, 2);
                System.out.println(integers);
    
    

    修改某个位置的值: set(i,0)

       //修改一个元素set set(地址,值)
            score.set(0, 0);
            System.out.println(score);
    

    注:集合里面只能存放对象

    4、集合的遍历:
    (1)使用使用Iterator来遍历
    hasNext 判断是否有元素
    next 获取下一个对象
    remove 删除当前遍历后的对象
    (2)for -each (增强for循环) 快速循环
    (3)for- i循环
    ArrayList (连续的内存空间 )
    优点:
    访问方便 通过get ()方法就能访问
    缺点:
    元素的删除和添加效率低
    LinkedList内部使用链表链接 不一定连续(基本不连续)
    优点:增减删除效率高 缺点:访问

    5、基本数据类型对应的包装类
    byte char int long float double boolean
    Byte Char Integer Long Float Double Boolean
    ArrayList里面自动将基本数据类型包装为对应的类

    6、将ArrayList转变为普通数组 toArray

    7、lambda函数

    //1、使用方式 定义一个类实现接口
       
           ArrayClass ac  = new ArrayClass();
           int [] num = {1,2,3,4,5,6};
           PXDClass pc = new PXDClass();
           ac.test(num,pc);
           //2、使用匿名类
           ArrayClass ac  = new ArrayClass();
           int [] num = {1,2,3,4,5,6};
           ac.test(num, new Show() {
               @Override
               public void customShow(int element) {
                   System.out.println(element);
               }
           });
           //3、使用Lambda
           //如果参数是一个接口列对象 且接口里面只有一个方法
           //可以省略方法名
           ArrayClass ac  = new ArrayClass();
           int [] num = {1,2,3,4,5,6};
           ac.test(num,(int element) ->{
               System.out.println(element);
           });
           //4、如果只有一个参数 参数类型可以省略
           ArrayClass ac  = new ArrayClass();
           int [] num = {1,2,3,4,5,6};
           ac.test(num,element -> {
               System.out.println(element);
           });
           //5、 如果代码块里面只有一行语句 大括号可以省略
           ArrayClass ac  = new ArrayClass();
           int [] num = {1,2,3,4,5,6};
           ac.test(num,element -> System.out.println(element));
    

    8、自己写一个比较器:

    class PXDCompare implements Comparator {
        //  什么时候需要手动创建比较器
        //如果系统默认提供的方法不能完成我们的比较
        //1、参与比较的对象必须要
        @Override
        public int compare(Object o, Object t1) {
            int mo = (int)o;
            int mt1 = (int)t1;
            return mo-mt1;
        }
    }
    

    PS

    今天所讲的Collection集合的使用比较简单,但是,还是对lambda 有点不是太了解。感觉今天讲的知识点虽然很枯燥,但是有必须要掌握。

    相关文章

      网友评论

          本文标题:Collection 集合的定义和使用

          本文链接:https://www.haomeiwen.com/subject/eanqsctx.html