首页 > 其他分享 >集合知识点(持续更新)

集合知识点(持续更新)

时间:2024-07-31 17:25:29浏览次数:17  
标签:知识点 java ArrayList list Collection util add 更新 集合

集合

Java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组。

Java 集合可以分为Collection 和 Map 两种体系:

  1. Collection接口:单列数据,定义了存取一组对象的方法的集合
    • List:元素有序,可重复的集合。
    • set:元素无序,不可重复的集合。
  2. Map接口:双列数组,保存具有映射关系的key-value对的集合。

Collection接口

概述

Collection 接口是List、Set 和 Queue接口的父接口,该接口里的定义方法可以操作上面三个接口的集合。

优点

  • JDK 不提供此接口的任何直接实现,而是提供更具体的子接口(像Set 和 List )实现
  • 在Java1.5之前,Java集合会丢失容器中所有对象的数据类型,把所有对象都当成Object类型处理;安全性差,如果要保证安全性,就需要多次的对数据的类型进行检查。
  • Java 5.0 开始增加泛型后,Java 集合可以在创建容器时就限定容器内对象的数据类型。

Collection具体方法

  1. 构造器

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            Collection list2 = new ArrayList();
            list2.add(123);
            Collection list3 = new ArrayList(list2);
            System.out.println(list3);
        }
    }
    
  2. 添加 add (Object obj)

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            System.out.println(list);
        }
    }
    
  3. 添加 addAll(Collection collection)

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            Collection coll2 = new ArrayList();
            coll2.add("abc");
            list.addAll(coll2);
            System.out.println(list);
        }
    }
    
  4. 获取有效元素的个数int size()

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            System.out.println(list.size());
        }
    }
    
  5. 清空集合 void clear()

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            list.clear();
            System.out.println(list.size());
        }
    }
    
  6. 是否清空集合 boolean isEmpty()

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            System.out.println(list.isEmpty());
        }
    }
    // 输出结果:false
    
  7. 查看当前集合是否包含某个元素 boolean contains(Object obj): 是否通过元素的equals方法来判断是否是同一个对象

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            System.out.println(list.contains("abc"));
        }
    }
    // 输出结果:true
    
  8. 看当前集合是否包含某个元素boolean containsAll(Collection c):也是调用元素的equals方法来比较的。拿两个集合的元素挨个比较。

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add(123);
            list.add("abc");
            Collection list2 = new ArrayList();
            list2.add(123);
            System.out.println(list.containsAll(list2)); 
        }
    }
    // 输出结果:true
    
  9. 删除boolean remove(Object):通过元素的equals方法判断是否要删除的那个元素。只会删除找到的第一个元素。

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            list.add("Hello");
            list.add("World");
            list.remove("Hello");
            list.remove("World");
            System.out.println(list);
        }
    }
    
  10. boolean removeAll(Collection coll): 取当前集合的差集

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection list = new ArrayList();
            Collection list2 = new ArrayList();
            list.add("a");
            list.add("b");
            list2.add("c");
            boolean b = list.containsAll(list2);
            System.out.println(b);
            System.out.println(list);
        }
    }
    // 输出:false
    //      [a,b]
    
  11. 取两个集合的交集boolean retainAll(Collection collection): 把交集的结果存在当前集合中,不影响传入集合。 ????????

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection coll1 = new ArrayList();
            Collection coll2 = new ArrayList();
            coll1.add(123);
            coll1.add(234);
            coll2.add(555);
            boolean b = coll1.retainAll(coll2);
            System.out.println(b);
            System.out.println(coll1);
            coll2.add(456);
            boolean c = coll1.retainAll(coll2);
            System.out.println(c);
            System.out.println(coll1);
        }
    }
    // true
    // []
    // false
    // []
    
  12. 集合是否相等 boolean equals(Object obj)

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection coll1 = new ArrayList();
            Collection coll2 = new ArrayList();
            coll1.add("abc");
            coll2.add("abc");
            System.out.println(coll1.equals(coll2));
        }
    }
    // 输出结果:true
    
  13. 转成对象数组 Object[] toArray()

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection collection= new ArrayList();
            collection.add("1");
            collection.add("2");
            Object[] objects = collection.toArray();
            System.out.println(Arrays.toString(objects));
        }
    }
    
  14. 获取集合对象的哈希值 String hashCode()

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Main {
        public static void main(String[] args) {
            Collection collection= new ArrayList();
            Collection collection2= new ArrayList();
            System.out.println(collection2.hashCode());
        }
    }
    // 输出结果:1
    
  15. 遍历iterator() : 返回迭代器对象,用于集合遍历

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class Main {
        public static void main(String[] args) {
            Collection collection = new ArrayList();
            collection.add("a");
            collection.add("b");
            collection.add("c");
            Iterator it = collection.iterator();
            for (int i = 0; i < collection.size(); i++) {
                System.out.println(it.next());
            }
        }
    }
    // a
    // b
    // c
    

Iterator迭代器

  1. 概述

    • Iterator对象成为迭代器(设计模式的一种),主要用于遍历Collectiom 集合中的元素。
    • 设计模式给迭代器模式定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需要暴露该对象的内部细节
    • 迭代器模式:就是为容器而生。类似于"公交车上的售票员"
  2. 迭代器

    • Collection 接口继承了java.lang.Iterable 接口,该接口有一个iterator()方法,那么所有实现了Collection 接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator 接口的对象。
    • Iterator 仅用于遍历集合,Iterator本身并不提供承装对象的能力。如果需要创建Iterator对象,则必须有一个被迭代的集合。
    • 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认角标在集合的第一个元素值之前
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class Main {
        public static void main(String[] args) {
            Collection collection = new ArrayList();
            collection.add("a");
            collection.add("b");
            collection.add("c");
            Iterator it = collection.iterator();
            while (it.hasNext()){
                Object next = it.next();
                System.out.println(next);
            }
            System.out.println(collection);
        }
    }
    // a
    // b
    // c
    // [a, b, c]
    
  3. 注意:

    1. Iterator 可以删除集合的元素,但是是遍历过程中通过迭代器对象的remove方法,不是集合对象的remove方法。

    2. 如果调用remove之前没有调用next是不合法的,会抛出IllegalStateException在调用it.next()方法之前必须要调用it.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。

    3. 使用foreach循环遍历集合元素

      • Java 5.0 提供了 foreach 循环迭代访问 Collection和数组。

      • 遍历操作不需获取Collection或数组的长度,无需使用索引访问元素。

      • 遍历集合的底层调用Iterator完成操作。

      • foreach还可以用来遍历数组。

List 集合

  1. 概述

    • Java List 接口是 Java Collections Framework 的成员。
    • List 允许添加重复元素
    • List 允许拥有“NUll” 元素
    • List 接口在Java 8 中有许多默认方法,列如replaceAll,sort和spliterator
    • 列表索引从0开始,就像数组一样
    • List 支持泛型,我们尽可能使用它。将Generics 与 List 一起使用将运行时避免ClassCastException
  2. 列表类图

    • Java List 接口扩展了 Collection 接口
    • 集合界面 extends Iterable 接口
    • 一些最常用的List实现类时ArrayList,LinkedList,Vector,Stack,CopyOnWriteArrayList。
    • AbstractList提供了List接口的骨干实现,以减少实现List的工作量。
  3. list的各种方法

    • int size() : 获取列表中元素的数量。

      import java.util.ArrayList;
      import java.util.List;
      
      public class Main {
          public static void main(String[] args) {
              List list = new ArrayList();
              list.add("sdaa");
              System.out.println(list.size());
          }
      }
      // 输出结果为1
      
    • boolean isEmpty() : 检查列表是否为空

      import java.util.ArrayList;
      import java.util.List;
      
      public class Main {
          public static void main(String[] args) {
              List list = new ArrayList();
              list.add("sdaa");
              System.out.println(list.isEmpty());
          }
      }
      // 输出结果为false
      
    • boolean contains(Object o ) :如果此列表包含指定的元素,则返回true

      import java.util.ArrayList;
      import java.util.List;
      
      public class Main {
          public static void main(String[] args) {
              List list = new ArrayList();
              list.add("sdaa");
              list.add("123");
              System.out.println(list.contains("123"));
          }
      }
      
    • Iterator iterator() : 以适当的顺序返回此列表中元素的迭代器。

      
      

标签:知识点,java,ArrayList,list,Collection,util,add,更新,集合
From: https://blog.csdn.net/qq_57295603/article/details/140828247

相关文章

  • 概述C#中各种类型集合的特点
    在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于System.Collections和System.Collections.Generic命名空间中。下面我将概述C#中几种常用的集合类型及其特点:1.System.Collections命名空间中的集合这个命名空间中的集合类型不支持泛型,因此在编译时不检......
  • 6万字嵌入式最全八股文面试题大全及参考答案(持续更新)
    目录冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适?选择排序算法是稳定的排序算法吗?为什么?插入排序在近乎有序的数组中表现如何?为什么?快速排序的基本思想是什么?它在最坏情况下的时间复杂度是多少?归并排序的空间复杂度是多少?如......
  • 更新至2023年上市公司ESG数据合集(十份数据:华证年度、华证季度、商道融绿、wind、秩鼎
    更新至2023年上市公司ESG数据合集(十份数据:华证年度、华证季度、商道融绿、wind、秩鼎、润灵环球、盟浪、富时罗素、上市银行华证ESG)数据名称:一、2018-2023年上市公司富时罗素ESG评分数据二、2018-2023年上市公司WindESG评级数据三、2014-2023年上市公司盟浪ESG评级数据四......
  • stable diffusion1.5炫彩新优设大模型V2又又又更新啦!震撼高清!细节拉满!新优设上线!
    前言虽然xl有了,有了SD3,但不论准确度,还是用法,1.5依然有着明显的优势。小南今天同样带来了一款SD1.5大模型。近期关注到马丁大佬的炫彩新优设DesignGenius【炫彩新优设】SD1.5设计大模型两周前发布了V2新版本。马丁大佬的作品总是能够给人带来意外的惊喜。优设V1版本人像......
  • 序列更新
    考场思路是,离线处理询问,从大到小枚举bi,对每个ai维护已被统计的询问区间由于数据随机,我们似乎可以感受到已统计询问区间扩张的次数不会太大,于是自然想到有没有办法精准扩张呢?很遗憾,难做另一个思路是,区间扩张的情况往往集中出现在最大的几个bi于是引入分块的“大段维护,局部朴素......
  • jdk的基本知识点
    JavaDevelopmentKit(JDK)是开发Java应用程序所必需的软件包,它包含了编译、调试和运行Java程序所需的各种工具。下面是一些关于JDK的基本知识:JDK组件Java编译器(javac):用于将Java源代码编译成字节码(.class文件)。Java解释器/执行器(java):用于执行编......
  • 从服务器获取数据后更新 DataTable 的列
    我需要一个解决方案来解决我的问题。我有一个Django应用程序,我在服务器端处理中使用DataTables,表模板对于我拥有的所有模型都是动态的,我只需传递列(带有data,||的字典列表|和name)在模板的上下文中,非常简单...title之后,我需要对列进行一些......
  • (超详细)备赛笔记 2024年全国职业院校(中职组)技能大赛(ZZ052大数据应用与服务)第一套试题
    2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第01套【子任务三和四】(一)任务一:数据获取与清洗1.子任务一:数据获取(1)启动Hadoop集群,使用HDFSShell指令,在HDFS根目录下级联创建一个名为/behavior/origin_log的目录,用于存储采集到的用户行为日志;--如果......
  • 集合(Collection)
    集合的简介Java中的集合(Collection)是一种用于存储、操作和管理数据元素的数据结构。它提供了一种高效、灵活的方式来处理对象集合。具体介绍如下:集合的定义和基本特性定义:集合是Java中用于存储对象的容器,具体来说,它存放的是对象的引用,而非对象本身。这种设计使得集合能够......
  • java基础题(附答案)(第二天的知识点预热)
    一、填空题Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。Java中整型变量有byte、short、int和long四种,不同类型的整数变量在内存中分配的字节数不同,数值范围也不同。对于int型变量,内存分配4个字节。在Java中浮点型变量有fl......