Java中Collection和Collections的区别(Demo详解)

简介: Java基础学习分享!
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…

最近在阅读大家的面试博客,比较经常提及的一个点就是Java中Collection和Collections的区别,那我就简单整理一下吧!

在这里插入图片描述

Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。实现该接口的类主要有List和Set,该接口的设计目标是为了各种具体的集合提供最大化的统一的操作方式。
  
Java集合相关知识请参考:List和Set集合基础详解  


Collections是针对集合类的一个包裹类,它提供了一系列静态方法实现对各种集合的搜索、排序以及线程安全化等操作,其中的大多数方法都是用于处理线性表。Collections类不能实例化,如同一个工具类,服务于Collection框架。如果在使用Collections类的方法时,对应的Collection对象null,则这些方法都会抛出NullPointerException。


总结:Collection是一个集合接口,Collections是针对集合类的一个包装类,工具类

在这里插入图片描述
java.util.Collections 是一个包装类。它包含有各种有关集合操作的 静态多态方法。此类不能实例化,就像一 个工具类,服务于Java的Collection框架。

我用Java代码给大家演示了一些Collections 中常用方法:可亲测实践

package com.bcqn.controller;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class TestCollection {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        int array[] = {12, 2020, 30, 123, 999};
        for (int i = 0; i < array.length; i++) {
            list.add(array[i]);
        }
        //排序(Sort)
        Collections.sort(list);//排序
        System.out.println(list);

       //反转(Reverse)
        //使用Reverse方法可以根据元素的自然顺序,对指定列表按降序进行排序。
        Collections.reverse(list);//反转
        System.out.println(list);

        //替换所有元素(Fill)
        Collections.fill(list,-1);//替换
        System.out.println(list);

        //拷贝(copy)
        int array1[] = {12, 2020, 30, 123, 999};
        for (int i = 0; i < array1.length; i++) {
            list.add(array[i]);
        }
        List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(new Integer[list.size()]));//目标列表
        Collections.copy(list1,list);//替换
        System.out.println(list1);
        //返回Collections中最小元素(min)
        int min = Collections.min(list);//替换
        System.out.println("返回Collections中最小元素(min):"+min);

        //返回Collections中最大元素(max)
        for (int i = 0; i < array1.length; i++) {
            list.add(array[i]);
        }
        int max = Collections.max(list);//替换
        System.out.println("返回Collections中最大元素(max):"+max);

    }

}
 

运行结果

[12, 30, 123, 999, 2020]
[2020, 999, 123, 30, 12]
[-1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, 12, 2020, 30, 123, 999]
返回Collections中最小元素(min):-1
返回Collections中最大元素(max):2020

Process finished with exit code 0

哈哈这下不会犯迷糊了吧!


The best investment is to invest in yourself.

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

愿你们奔赴在自己的热爱里!

目录
相关文章
|
25天前
|
Java
Java中的equals()与==的区别与用法
【7月更文挑战第28天】
40 12
|
6天前
|
存储 安全 Java
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
这篇文章是关于Java面试的第二天笔记,涵盖了HashMap与HashTable的区别、ConcurrentHashMap的实现原理、IOC容器的实现方法、字节码的概念和作用、Java类加载器的类型、双亲委派模型、Java异常体系、GC如何判断对象可回收、线程的生命周期及状态,以及sleep、wait、join、yield的区别等十道面试题。
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
|
5天前
|
Java
MQTT(EMQX) - Java 调用 MQTT Demo 代码
MQTT(EMQX) - Java 调用 MQTT Demo 代码
9 0
MQTT(EMQX) - Java 调用 MQTT Demo 代码
|
6天前
|
存储 关系型数据库 MySQL
一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)
这篇文章是关于Java面试中关于数据库性能优化和MySQL特性的五个问题,包括处理慢查询、ACID特性保证、MVCC概念、MySQL主从同步原理以及MyISAM和InnoDB存储引擎的区别。
|
6天前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
14 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
12天前
|
Java
JAVA中public class和class的区别
JAVA中public class和class的区别
26 7
|
14天前
|
Java 编译器 测试技术
Java零基础教学(03):如何正确区别JDK、JRE和JVM??
【8月更文挑战第3天】Java零基础教学篇,手把手实践教学!
38 2
|
16天前
|
人工智能 Java 编译器
Java零基础(3) - 区别JDK、JRE和JVM
【8月更文挑战第3天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
36 1
|
1天前
|
Java
"Java排序大揭秘:Comparable与Comparator,究竟有何神秘区别?掌握它们,告别排序难题!"
【8月更文挑战第19天】Java提供Comparable与Comparator两种排序机制。Comparable位于`java.lang`包,定义了`compareTo()`方法以实现类的自然排序;Comparator位于`java.util`包,通过`compare()`方法提供外部定制排序。实现Comparable固定了排序策略,适用于类自带排序逻辑;使用Comparator则可在不改动类的前提下灵活定义多种排序规则,适合多样化的排序需求。选择合适机制可优化排序效率并增强代码灵活性。