Java集合Collection接口中的常用方法演示

简介: 由于接口不可以创建对象,所以,以下方法的演示将以Collection接口的子接口List的实现类ArrayList()进行演示。

添加 add(Objec tobj) 和 addAll(Collection coll)

(1)add(Objec tobj)添加一个对象,如果是基本数据类型,则自动装箱。

    ArrayList list1 = new ArrayList();
        Date date = new Date();
        list1.add(1);//基本数据类型自动装箱
        list1.add(date);//引用数据类型
        System.out.println(list1);

输出结果

2345_image_file_copy_92.jpg

(2)addAll(Collection coll)添加一个集合。

    ArrayList list1 = new ArrayList();
        list1.add("张三");
        list1.add(123);
        ArrayList list2 = new ArrayList();
        list2.add("李四");
        list2.add(55);
        list1.addAll(list2);//将集合list2加到集合list1中
        System.out.println(list1);

输出结果

2345_image_file_copy_93.jpg

获取有效元素的个数 int size()

int size()

    ArrayList list1 = new ArrayList();
        Date date = new Date();
        list1.add(1);
        list1.add(date);
        System.out.println(list1.size());

输出结果

2345_image_file_copy_94.jpg

清空集合 void clear()

void clear()

        ArrayList list1 = new ArrayList();
        Date date = new Date();
        list1.add(1);
        list1.add(date);
        list1.clear();//清空集合
        System.out.println(list1.size());//输出元素个数

输出结果

2345_image_file_copy_95.jpg

是否是空集合 boolean isEmpty()

boolean isEmpty()

        ArrayList list1 = new ArrayList();
        Date date = new Date();
        System.out.println(list1.isEmpty());//未添加元素,判断是否是空集合
        list1.add(1);
        list1.add(date);
        System.out.println(list1.isEmpty());//添加完元素,判断是否是空集合

输出结果

2345_image_file_copy_96.jpg

是否包含某个元素 boolean contains(Object obj) 和 boolean containsAll(Collection c)

(1)boolean contains(Object obj):是通过元素的equals方法来判断是否是同一个对象。

    ArrayList list1 = new ArrayList();
        Date date = new Date();
        list1.add(1);
        list1.add(date);
        System.out.println(list1.contains(1));

输出结果

2345_image_file_copy_97.jpg

(2)boolean containsAll(Collection c):也是调用元素的equals方法来比较的。拿两个集合的元素挨个比较。

        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        //list1赋值
        list1.add(1);
        list1.add("张三");
        //list2赋值
        list2.add(1);
        list2.add("张三");
        System.out.println(list1.containsAll(list2));

输出结果

2345_image_file_copy_98.jpg

注意:如果是自定义对象,则需要在对象中重写Object的equals方法,否则比较的是地址。重写后比较的是属性的值。

删除 boolean remove(Object obj) 和 boolean removeAll(Collection coll)

(1)boolean remove(Object obj) :通过元素的equals方法判断是否是要删除的那个元素。只会删除找到的第一个元素。

        ArrayList list1 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        list1.add("张三");
        list1.add("张三");
        list1.add("张三");
        list1.remove("张三");//在集合list1中删除元素"张三"
        System.out.println(list1);

输出结果

2345_image_file_copy_99.jpg

(2)boolean removeAll(Collection coll):取当前集合的差集。(即A-B=A-AB)

        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        list2.add("王五");
        list2.add("李四");
        list1.removeAll(list2);
        System.out.println(list1);

输出结果

2345_image_file_copy_100.jpg

取两个集合的交集 boolean retainAll(Collection c)

boolean retainAll(Collection c):把交集的结果存在当前集合中,不影响c。

        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        list2.add("王五");
        list2.add("李四");
        list1.retainAll(list2);
        System.out.println(list1);

输出结果

2345_image_file_copy_101.jpg

集合是否相等 boolean equals(Object obj)

boolean equals(Object obj)

        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        list2.add("张三");
        list2.add("李四");
        System.out.println(list1.equals(list2));

输出结果

2345_image_file_copy_102.jpg

注意:该原理是调用集合元素的equals方法进行比较,如果集合元素是自定义对象,则必须要重写equals方法,否则比较的是地址值。

转成对象数组 Object[] toArray()

Object[] toArray()

    ArrayList list1 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        Object[] objects = list1.toArray();

获取集合对象的哈希值

hashCode()

        ArrayList list1 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        System.out.println(list1.hashCode());

输出结果

2345_image_file_copy_103.jpg

遍历 iterator()

iterator()

        ArrayList list1 = new ArrayList();
        list1.add("张三");
        list1.add("李四");
        Iterator iterator = list1.iterator();
        while (iterator.hasNext()){
            String next = (String) iterator.next();
            System.out.println(next);
        }

输出结果

2345_image_file_copy_104.jpg

相关文章
|
3天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
26 4
|
5天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
23 4
|
7天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
12 2
|
10天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
10天前
|
Java 测试技术 API
Java零基础-接口详解
【10月更文挑战第19天】Java零基础教学篇,手把手实践教学!
16 1
|
9天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
6月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
3月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
3月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
15天前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
44 5