操作集合的工具类Collections(上)

Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。

  1. Collections提供了如下几个方法同于对List集合元素进行排序。
static void reverse(List list)  //反转指定List集合中元素的顺序
static void shuffle(List list)  //对List集合元素进行随机排序(shuffle方法模拟了“洗牌”动作)
static void sort(List list)  //根据元素的自然顺序对指定List集合的元素按照升序排序
static void swap(List list, int i, int j)  //将List集合中的第i个元素和第j个元素进行交换
static void rotate(List list, int distance) //当distance为正数时,将list集合的后distance个元素“整体”移动到前面;当distance为负数时,将list集合的前distance个元素整体移动到后面。该方法不会改变集合的长度。

下面程序简单示范了利用Collections工具类来操作List集合。

import java.util.Collections;

public class SortTest {

	public static void main(String[] args) {
		ArrayList<Integer> nums = new ArrayList<>();
		nums.add(2);
		nums.add(-5);
		nums.add(3);
		nums.add(0);
		
		System.out.println(nums);//[2, -5, 3, 0]
		//从输出结果可以看出,ArrayList是按照加入的顺序输出的
		
		//将nums中的元素反转
		Collections.reverse(nums);
		System.out.println(nums); //[0, 3, -5, 2]

		//将nums中的元素按照自然顺序排序
		Collections.sort(nums);
		System.out.println(nums); //[-5, 0, 2, 3]
		
		//将nums中的元素混洗
		Collections.shuffle(nums);
		System.out.println(nums);//[-5, 2, 3, 0]
		
		//将nums中的后两个元素整体移动到前面
		Collections.rotate(nums, 2);
		System.out.println(nums);//[3, 0, -5, 2]	
	}
}
  1. 查找、替换操作
    Collections还提供了用于查找、替换集合元素的常用方法。
    下面列出几个常见的:
static int binarySearch(List list, Object key) 使用二分搜索法搜索指定的List集合,
以获得指定对象在List集合中的索引。如果要使该方法可以正常工作,则必须保证List集合中的元素已经有序状态。因为二分查找必须保障带查找序列有序。
static Object max(Collection coll) //根据元素的自然顺序,返回给定集合中的最大元素。
static Object min(Collection coll) //根据元素的自然顺序,返回指定集合中的最小元素。
static void fill(List list, Object obj) //使用指定元素obj替换指定list集合中的所有元素
static int frequency(Collection c, Object o) //返回指定集合中指定元素出现的次数

下面程序简单示范了Collections工具类的用法:

package JavaLearing;

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

public class SearchTest {

	public static void main(String[] args) {


		ArrayList<Integer> nums = new ArrayList<>();
		
		nums.add(2);
		nums.add(-5);
		nums.add(3);
		nums.add(0);
		
		System.out.println(nums); //[2, -5, 3, 0]
		
		//输出最大元素
		System.out.println(Collections.max(nums));//3
		
		//输出最小元素
		System.out.println(Collections.min(nums));//-5
		
		//将集合中的-5用100来代替
		Collections.replaceAll(nums, -5, 100);
		System.out.println(nums);//[2, 100, 3, 0]

		//判断集合中的元素0出现的次数
		System.out.println(Collections.frequency(nums, 0));
		
		
		//二分法查找集合中的元素3
		Collections.sort(nums);
		System.out.println(Collections.binarySearch(nums, 3)); //输出查找到的位置2
		
	}

}

下节介绍同步控制和不可变集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值