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

相关文章
|
14天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
4天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
21 1
|
14天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
25 2
|
14天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
31 1
|
18天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
65 4
|
18天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
18天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
17 0
|
3月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
3月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
下一篇
无影云桌面