JAVA基础知识之Collections工具类

本文详细介绍了Java集合框架中的Collections工具类,包括排序、查找、替换和同步控制等核心操作。通过实例展示了如何使用Collections进行各种列表操作,如排序、查找最大最小值、替换元素等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:排序操作
Collections提供以下方法对List进行排序操作
void reverse(List list):反转
void shuffle(List list),随机排序
void sort(List list),按自然排序的升序排序
void sort(List list, Comparator c);定制排序,由Comparator控制排序逻辑
void swap(List list, int i , int j),交换两个索引位置的元素
void rotate(List list, int distance),旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面。

package com.weixun.api;

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

public class CollectionsTest {
	
	public static void main(String[] args) {
        ArrayList nums =  new ArrayList();
        nums.add(3);
        nums.add(-3);
        nums.add(2);
        nums.add(4);
        nums.add(-2);
        System.out.println(nums);
        
        Collections.reverse(nums);//对list进行反转排序
        System.out.println(nums);
        
        Collections.sort(nums);//按自然排序的升序排序
        System.out.println(nums);
        
        Collections.shuffle(nums);//随机排序
        System.out.println(nums);
        
        //下面只是为了演示定制排序的用法,将int类型转成string进行比较
        Collections.sort(nums, new Comparator() {
            
            @Override
            public int compare(Object o1, Object o2) {
                String s1 = String.valueOf(o1);
                String s2 = String.valueOf(o2);
                return s1.compareTo(s2);
            }
            
        });//定制排序,由comparator控制排序逻辑
        System.out.println(nums);
        
        Collections.swap(nums, 0, 1);//交换0和1两个索引位置的元素
        System.out.println(nums);
        
        Collections.rotate(nums, 1);//当distance为正数时,将list后distance个元素整体移到前面。
        System.out.println(nums);
        Collections.rotate(nums, -1);//当distance为负数时,将 list的前distance个元素整体移到后面.
        System.out.println(nums);
    }
}

运算结果:

[3, -3, 2, 4, -2]
[-2, 4, 2, -3, 3]
[-3, -2, 2, 3, 4]
[-2, 4, -3, 3, 2]
[-2, -3, 2, 3, 4]
[-3, -2, 2, 3, 4]
[4, -3, -2, 2, 3]
[-3, -2, 2, 3, 4]

二:查找,替换操作
int binarySearch(List list, Object key), 对List进行二分查找,返回索引,注意List必须是有序的
int max(Collection coll),根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)
int max(Collection coll, Comparator c),根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
void fill(List list, Object obj),用元素obj填充list中所有元素
int frequency(Collection c, Object o),统计元素出现次数
int indexOfSubList(List list, List target), 统计targe在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target).
boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素。

package com.weixun.api;

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

public class CollectionsTest {

	public static void main(String[] args) {
        ArrayList num =  new ArrayList();
        num.add(3);
        num.add(-1);
        num.add(-5);
        num.add(10);
        System.out.println(num+"\n");
        
        System.out.println(Collections.max(num)+"\n");//根据自然顺序返回最大的元素
        
        System.out.println(Collections.min(num)+"\n");//根据自然顺序返回最小的元素
        
        Collections.replaceAll(num, -1, -7);//用新元素-7替换旧元素-1
        System.out.println(num+"\n");
        
        System.out.println(Collections.frequency(num, 3)+"\n");//统计元素3出现的次数
        
        System.out.println(num);
        System.out.println(Collections.binarySearch(num, -5));
        Collections.sort(num);//按自然顺序排序
        System.out.println(num);
        System.out.println(Collections.binarySearch(num, -5)+"\n");//对排序后的list进行二次查找返回索引(注:list必须是有序的)
        
        ArrayList num2 =  new ArrayList();
        num2.add(3);
        System.out.println(Collections.indexOfSubList(num, num2));
        num2.add(-3);
        System.out.println(Collections.indexOfSubList(num, num2)+"\n");
        
        Collections.fill(num, 1);
        System.out.println(num);
    }
}

运算结果:

[3, -1, -5, 10]

10

-5

[3, -7, -5, 10]

1

[3, -7, -5, 10]
2
[-7, -5, 3, 10]
1

2
-1

[1, 1, 1, 1]

三:同步控制
Collections中几乎对每个集合都定义了同步控制方法,例如 SynchronizedList(), SynchronizedSet()等方法,来将集合包装成线程安全的集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值