【JAVA学习之路 | 进阶篇】Collections工具类

简介: 【JAVA学习之路 | 进阶篇】Collections工具类

1.概念

参考操作数组的工具类 : Arrays.Collections在java.util包下,是操作集合框架(List, Set, Map等)的工具类.

2.常用方法(有个印象,不会就查API)

Collections提供了一系列静态(static)的方法对集合元素进行排序,查询和修改等操作,还提供了对集合对象设置不可变,对集合对象实现同步控制等方法.

方法较多,只截取了一部分.

(1). 排序操作


  • reverse(List list) 反转list中元素顺序.
  • shuffle(List list) 对list中的元素进行随机排序.
  • sort(List list) 按照元素的自然顺序对List中的元素按升序排序.
  • sort(List list, Comparator) 根据指定的Comparator的顺序对list中的元素排序.
  • swap(List list, int i, int j) 将list中第i个元素与第j个元素互换
@Test
    public void Test1() {
        List list = new ArrayList();
        list.add(12);
        list.add(78);
        list.add(67);
        list.add(45);
        list.add(56);
        list.add(34);
        list.add(23);
        for (Object obj : list) {
            System.out.print(obj + "\t");
        }
        System.out.println();
        Collections.reverse(list);
        for (Object obj : list) {
            System.out.print(obj + "\t");
        }
    }
 
控制台
12  78  67  45  56  34  23  
23  34  56  45  67  78  12
@Test
    public void test2() {
        List list = new ArrayList();
        list.add(12);
        list.add(78);
        list.add(67);
        list.add(45);
        list.add(56);
        list.add(34);
        list.add(23);
        //自然排序,按照升序排序
        Collections.sort(list);
        for (Object obj : list) {
            System.out.print(obj + "\t");
        }
        System.out.println();
        //定制排序,按照comparator指定的顺序排序
        Collections.sort(list, new Comparator(){
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof Integer && o2 instanceof Integer) {
                    Integer i1 = (Integer) o1;
                    Integer i2 = (Integer) o2;
                    return -(i1 - i2);
                }
                throw new RuntimeException();
            }
        });
        for (Object obj : list) {
            System.out.print(obj + "\t");
        }
    }
 
控制台
12  23  34  45  56  67  78  
78  67  56  45  34  23  12

(2). 查找


  • Object max(Collection collection)按照集合的自然顺序返回集合中最大的元素.实际上返回最右边的元素.
  • Object max(Collection collection, Comparator comparator) 按照comparator指定的顺序,返回集合中最大的元素.
  • Object min(Collection collection)按照集合的自然顺序返回集合中最小的元素.实际上返回最左边的元素.
  • Object min(Collection collection, Comparator comparator) 按照comparator指定的顺序,返回集合中最小的元素.

(3). 复制, 替换

  • void copy(List dest, List src) 将src的内容复制到dest上.该必须满足dest.size()不小于src.size().
  • boolean replaceAllList(List list, Object oldval, Object newval) 使用新的值替换list对象中所有的旧值.
  • 提供了多种unmodifiableXxx(),返回指定的Xxx不可变的视图对象.
@Test
    public void Test3() {
        List list = new ArrayList();
        list.add(12);
        list.add(78);
        list.add(67);
        list.add(45);
        list.add(56);
        list.add(34);
        list.add(23);
        //list1是不可变的List对象
        List list1 = Collections.unmodifiableList(list);
        //报错
        list1.add(23);
    }

(4). 同步

  • 提供了多种synchronizedXxx方法,该方法可将指定集合包装成线程安全的集合.其实源码就是用synchronized包了起来.
相关文章
|
8月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
666 0
|
8月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
794 8
|
8月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
420 1
|
9月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
139 5
|
8月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
408 1
|
8月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
382 1
|
9月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
396 0
|
9月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
570 16
|
10月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。