8.8.2 查找 替换 操作
Collections
还提供了如下常用的用于查找、替换集合元素的类方法。
二分查找
方法 |
描述 |
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) |
使用二分搜索法搜索指定的List 集合,以获得指定对象在List 集合中的索引。如果要使该方法可以正常工作,则必须保证List 中的元素已经处于有序状态 |
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) |
Searches the specified list for the specified object using the binary search algorithm. |
查找最大最小值
方法 |
描述 |
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) |
根据元素的自然顺序 (基于自然排序),返回给定集合中的最大元素。 |
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) |
根据第二个Comparator 参数指定的顺序,返回给定集合中的最大元素。 |
static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) |
根据元素的自然顺序,返回给定集合中的最小元素。 |
static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) |
根据第二个Comparator 参数指定的顺序,返回给定集合中的最小元素 |
填充或者替换List
方法 |
描述 |
static <T> void fill(List<? super T> list, T obj) |
使用指定元素object 替换指定List 集合中的所有元素。 |
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) |
使用一个新值newValue 替换List 对象的所有旧值oldValue . |
统计一个元素出现的次数
方法 |
描述 |
static int frequency(Collection<?> c, Object o) |
返回指定集合中指定元素的出现次数。 |
查找子List在源List中第一次或最后一次出现的索引
方法 |
描述 |
static int indexOfSubList(List<?> source, List<?> target) |
返回target List 对象在source List 对象中第一次出现的位置索引;如果source List 中没有出现这样的子List ,则返回-1。 |
static int lastIndexOfSubList(List<?> source, List<?> target) |
返回target List 对象在source List 对象中最后一次出现的位置索引;如果source List 中没有出现这样的子List ,则返回-1 |
实例
下面程序简单示范了Collections
工具类的用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.util.*;
public class SearchTest { public static void main(String[] args) { ArrayList nums = new ArrayList(); nums.add(2); nums.add(-5); nums.add(3); nums.add(0); System.out.println(nums); System.out.println(Collections.max(nums)); System.out.println(Collections.min(nums)); Collections.replaceAll(nums , 0 , 1); System.out.println(nums); System.out.println(Collections.frequency(nums , -5)); Collections.sort(nums); System.out.println(nums); System.out.println(Collections.binarySearch(nums , 3)); } }
|
运行结果如下:
1 2 3 4 5 6
| 3 -5 [2, -5, 3, 1] 1 [-5, 1, 2, 3] 3
|