014_Collections常用方法

Collections方法精讲
本文详细介绍Java中Collections类的常用方法,包括排序、反转和置换等操作,并通过具体示例展示了如何使用这些方法来高效地处理List集合。

1. Collections常用方法

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

/**
 * Collections常用方法 
 */
public class CollectionsSort {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<>();
		for(int i = 0; i < 10; i++) {
			list.add(i);
		}
		System.out.println(Arrays.toString(list.toArray()));
		
		sort(list, new Comparator<Integer>() {
			public int compare(Integer o1, Integer o2) {
				return o2 - o1;
			}
		});
		
		System.out.println(Arrays.toString(list.toArray()));
	}
	
	/**
	 * 使用Collections的reverse方法, 对容器内容反转
	 * @param list
	 */
	public static <T> void reverse(List<T> list) {
		Collections.reverse(list);
	}
	
	/**
	 * 使用Collections的shuffle方法,对容器内容任意置换
	 * @param list
	 */
	public static <T> void shuffle(List<T> list) {
		Collections.shuffle(list);
	}
	
	/**
	 * 使用Collections的sort方法, 对实现了Comparable接口的容器内容排序
	 * @param list
	 */
	public static <T extends Comparable<T>> void sort(List<T> list) {
		Collections.sort(list);
	}
	
	/**
	 * 使用Collections的sort方法, 同时使用Comparator接口添加业务逻辑, 对容器内容排序
	 * @param list
	 */
	public static <T> void sort(List<T> list, Comparator<T> c) {
		Collections.sort(list, c);
	}
	
}

 

Java 的 `java.util.Collections` 类是一个实用工具类,提供了一组静态方法,用于操作或返回集合(如列表、集合和映射),为集合提供便捷的算法和操作。以下是对其常用方法的讲解: ### 排序 - `sort(List<T> list)`:对指定列表进行升序排序,列表中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(2); Collections.sort(list); System.out.println(list); // 输出: [1, 2, 3] } } ``` - `sort(List<T> list, Comparator<? super T> c)`:使用指定的比较器对列表进行排序。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortWithComparatorExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); Collections.sort(list, Comparator.reverseOrder()); System.out.println(list); // 输出: [cherry, banana, apple] } } ``` ### 查找 - `binarySearch(List<? extends Comparable<? super T>> list, T key)`:使用二分查找算法在有序列表中查找指定元素,列表中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class BinarySearchExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); int index = Collections.binarySearch(list, 2); System.out.println(index); // 输出: 1 } } ``` - `binarySearch(List<? extends T> list, T key, Comparator<? super T> c)`:使用指定的比较器在有序列表中查找指定元素。 ### 反转 - `reverse(List<?> list)`:反转指定列表中元素的顺序。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ReverseExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.reverse(list); System.out.println(list); // 输出: [3, 2, 1] } } ``` ### 旋转 - `rotate(List<?> list, int distance)`:将列表中的元素旋转指定的距离。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RotateExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.rotate(list, 1); System.out.println(list); // 输出: [3, 1, 2] } } ``` ### 填充 - `fill(List<? super T> list, T obj)`:用指定的元素填充指定的列表。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FillExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.fill(list, 0); System.out.println(list); // 输出: [0, 0, 0] } } ``` ### 复制 - `copy(List<? super T> dest, List<? extends T> src)`:将一个列表中的元素复制到另一个列表中。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CopyExample { public static void main(String[] args) { List<Integer> src = new ArrayList<>(); src.add(1); src.add(2); src.add(3); List<Integer> dest = new ArrayList<>(src.size()); for (int i = 0; i < src.size(); i++) { dest.add(0); } Collections.copy(dest, src); System.out.println(dest); // 输出: [1, 2, 3] } } ``` ### 最小和最大 - `min(Collection<? extends T> coll)`:返回指定集合中的最小元素,集合中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MinExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(2); int min = Collections.min(list); System.out.println(min); // 输出: 1 } } ``` - `max(Collection<? extends T> coll)`:返回指定集合中的最大元素,集合中的元素必须实现 `Comparable` 接口。 ### 同步集合 - `synchronizedList(List<T> list)`:返回指定列表的同步(线程安全)视图。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SynchronizedListExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); List<Integer> syncList = Collections.synchronizedList(list); } } ``` - `synchronizedSet(Set<T> s)`:返回指定集合的同步(线程安全)视图。 - `synchronizedMap(Map<K, V> m)`:返回指定映射的同步(线程安全)视图。 ### 不可变集合 - `unmodifiableList(List<? extends T> list)`:返回指定列表的不可修改视图。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class UnmodifiableListExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); List<Integer> unmodifiableList = Collections.unmodifiableList(list); try { unmodifiableList.add(2); // 会抛出 UnsupportedOperationException } catch (UnsupportedOperationException e) { System.out.println("不支持修改操作"); } } } ``` - `unmodifiableSet(Set<? extends T> s)`:返回指定集合的不可修改视图。 - `unmodifiableMap(Map<? extends K, ? extends V> m)`:返回指定映射的不可修改视图。 ### 频率统计 - `frequency(Collection<?> c, Object o)`:返回指定元素在指定集合中出现的次数。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FrequencyExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(2); int frequency = Collections.frequency(list, 2); System.out.println(frequency); // 输出: 2 } } ``` ### 添加元素 - `addAll(Collection<? super T> c, T... elements)`:将所有指定元素添加到指定集合中。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class AddAllExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list, "a", "b", "c"); System.out.println(list); // 输出: [a, b, c] } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值