Collections常用方法

Collections排序
本文介绍Java.util.Collections类中四个常用的排序方法:自然排序、倒序、随机排序及按自定义规则排序。通过实例展示了如何使用这些方法对List集合进行操作。

Java.util.Collections类包的学习 java.util.Collections类包含很多有用的方法,可以使程序员的工作变得更加容易,但是这些方法通常都没有被充分地利用。Javadoc给出 Collections类最完整的描述:“这一个类包含可以操作或返回集合的专用静态类。”

/**
 * Collections常用的四个排序方法
 * @author jimmy
 * @date 2010-4-26
 */
public class CollectionsSort {
  
	public static void main(String[] args){
		
		int[] test = new int[]{1,5,8,3,4,10,9,7};
		List<Integer> ids = new ArrayList<Integer>();
 		for(int i : test){
			ids.add(i);
		}
 		//自然排序
 		Collections.sort(ids);
 		
 		//倒序
 		Collections.reverse(ids);
 		
 		//随机排序
 		Collections.shuffle(ids);
 		
 		//按指定的Sort类进行排序
  		CollectionsSort.SortElements s = new SortElements();
 		Collections.sort(ids, s);
	}
	
	/**
	 * 排序规则类
	 * 
	 * @author jimmy
	 * @date 2010-4-26
	 */
	 static  class SortElements implements Comparator<Integer>{
  		public int compare(Integer o1, Integer o2) {
 			return o1-o2;
		}
 	}
}

 

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] } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值