【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包了起来.
相关文章
|
11天前
|
算法 Java 关系型数据库
校招 Java 面试基础题目解析及学习指南含新技术实操要点
本指南聚焦校招Java面试,涵盖Java 8+新特性、多线程与并发、集合与泛型改进及实操项目。内容包括Lambda表达式、Stream API、Optional类、CompletableFuture异步编程、ReentrantLock与Condition、局部变量类型推断(var)、文本块、模块化系统等。通过在线书店系统项目,实践Java核心技术,如书籍管理、用户管理和订单管理,结合Lambda、Stream、CompletableFuture等特性。附带资源链接,助你掌握最新技术,应对面试挑战。
31 2
|
11天前
|
设计模式 算法 Java
2025 春季校招 Java 研发笔试题详细解析及高效学习指南
本指南专为2025春季校招Java研发岗位笔试设计,涵盖Java 17+新特性(如模式匹配、文本块、记录类和密封类)、现代技术栈(Spring Boot 3、响应式编程、Stream API增强)以及算法与数据结构实战。同时深入解析Spring Data JPA、事务管理、性能优化等内容,并结合实际案例讲解常见算法题解与设计模式应用。资源包含核心知识点、面试题及笔试技巧,助力高效备考。下载地址:[链接](https://pan.quark.cn/s/14fcf913bae6)。
28 1
|
3月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
|
5月前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
105 10
|
5月前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
476 4
|
Java
排名前16的Java工具类
排名前16的Java工具类
76 0
|
Java
排名前16的Java工具类
排名前16的Java工具类
217 0
排名前 16 的 Java 工具类,哪个你没用过?
在Java中,实用程序类是定义一组执行通用功能的方法的类。 这篇文章展示了最常用的Java实用工具类及其最常用的方法。类列表及其方法列表均按受欢迎程度排序。数据基于从GitHub随机选择的50,000个开源Java项目。 希望您可以通过浏览列表来了解
|
XML JSON JavaScript
干货:排名前 16 的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。
234 0
|
Java 数据安全/隐私保护 数据格式
干货:排名前16的Java工具类
image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。
4909 0
OSZAR »