collection和collections区别

2023-10-27

区别

Collection它是一个集合的接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在java类库当中有很多具体的实现。
Collection接口的意义就是为各种具体的集合提供最大化的统一操作方式。
主要实现的Collection接口的类有:Set、List、Queue

Coleections它是一个包装类。它包含了各种有关集合操作的静态多态方法。这个类是不能喝实例化的,就像Arrays类一样,是一个工具类,服务于Java当中的Collection框架

Collections中常用的属性

addAll(Collection<? super T> c, T… elements)
将所有指定的元素添加到指定的集合。
一次性可以给集合添加多个元素

T… elements表示一次可以添加多个不定量的元素

import java.util.ArrayList;
import java.util.Collections;

public class Demo01 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("start");
        Collections.addAll(list,"Xin","Chen","Yu","Chen","Xi");
        System.out.println(list);
    }
}

在这里插入图片描述

sort(List< T > list)
对指定的列表进行排序。(升序排序)

sort(List l ist, Comparator<? super T> c)
根据指定的比较器引起的顺序对指定的列表进行排序。

binarySearch(List<? extends Comparable<? super T>> list, T key)
使用二叉搜索算法搜索指定对象的指定列表,所以在使用这个方法的时候,一定呀提前给集合排好序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Demo02 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(4);
        //调用Collections方法一次给指定集合添加多个元素
        Collections.addAll(list, 2, 5, 3, 1);
        System.out.println("初始默认的集合为:" + list);
        Collections.sort(list);
        System.out.println("使用sort()对集合进行排序" + list);
        System.out.println("查找集合当中指定元素的索引(3)位置:"
                + Collections.binarySearch(list, 3));

        //sort(List<T> list, Comparator<? super T> c) 根据自己的定义去给集合进行排序
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println("使用sort()方法加上自己定义(从大到小)排序的" +
                "方式对集合进行排序" + list);
    }
}

在这里插入图片描述

swap(List<?> list, int i, int j)
交换指定列表中指定位置的元素。

copy(List<? super T> dest, List<? extends T> src)
将所有元素从一个src复制到另一个列表dest中。
在这里要注意到dest当中元素的数量必须大于等于src中数据的数量

import java.util.ArrayList;
import java.util.Collections;

public class Demo03 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(4);
        //调用Collections方法一次给指定集合添加多个元素
        Collections.addAll(list, 2, 5, 3, 1);
        System.out.println("list初始默认的集合为:" + list);
        Collections.swap(list, 0, 3);
        System.out.println("将list当中索引为0和3位置的元素互到之后为:" + list);

        //创建了一个新的集合
        ArrayList<Integer> list1 = new ArrayList<>();
        //给新集合添加了5个元素,因为我们想加个list中的元素复制到list1集合当中去
        //所以list1中元素的数量必须大于等于list中的元素数量
        Collections.addAll(list1, 100, 101, 102, 103, 104);
        System.out.println("list1中原始数据:" + list1);
        Collections.copy(list1, list);
        System.out.println("经过copy方法,把list的元素覆盖到list1中的元素:" + list1);
    }
}

在这里插入图片描述

emptyList()
返回为空的集合,是不能添加数据
若是添加会报异常的
它返回的是一个空集合,不能使用的,我们用于在判断的时候若是需要一个空集合就会调用这个得到一个空集合

在这里插入图片描述

max(Collection<? extends T> coll)
根据其元素的 自然顺序返回给定集合的最大元素。
max(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定的比较器引发的顺序返回给定集合的最大元素。

min(Collection<? extends T> coll)
根据其元素的 自然顺序返回给定集合的最小元素
min(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定的比较器引发的顺序返回给定集合的最小元素。

max和min就不再这做过多演示,很简单滴


fill(List<? super T> list, T obj)
用指定的元素代替指定列表的所有元素。

replaceAll(List list, T oldVal, T newVal)
将列表中一个指定值的所有出现替换为另一个。

reverse(List<?> list)
反转指定列表中元素的顺序

import java.util.ArrayList;
import java.util.Collections;

public class Demo05 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "Xin", "Chen", "Yu", "Chen", "Xi");
        System.out.println("原集合当中的数据为:" + list);

        //reverse()方法反转集合当中所有的元素
        Collections.reverse(list);
        System.out.println("reverse()方法反转所有的元素后集合数据为:" + list);

        //replaceAll()方法将指定集合当中的指定的所有元素替换为一个新的元素
        Collections.replaceAll(list, "Xin", "Niu");
        System.out.println("replaceAll()方法替换集合当中的指定元素" + list);

        //fill()方法将集合当中的所有元素替换为指定元素
        Collections.fill(list, "牛");
        System.out.println("fill()方法替换集合当中的所有元素:" + list);
    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

collection和collections区别 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • 在 Spring Boot Actuator 健康检查 API 中启用日志记录

    我正在使用 Spring boot Actuator APIproject https imobilenumbertracker com 拥有一个健康检查端点 并通过以下方式启用它 management endpoints web base
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 如何通过 Inno Setup for NetBeans 使用自定义 .iss 文件

    我将 Inno Setup 5 与 NetBeans 8 一起使用 并且我已经能够创建一个安装程序来安装该应用程序C users username local appname 但是我希望将其安装在C Programfiles 我如何在 Ne
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a

随机推荐