常用类
Collection工具类
Java中针对集合的操作非常频繁,例如排序,从集合中查找某个元素等,针对这些常见操作,Java提供了一个工具类的专门用来操作集合,这个类就是Collections.
- 添加、排序操作
Collections类中提供了一系列方法用于对List集合进行添加和排序操作:
方法声明 | 功能描述 |
---|---|
static <T> boolean addAll(Collection<? super T> c, T… elements) | 将所有指定元素添加到指定集合c中 |
static void reverse(List list) | 反转指定List集合中元素的顺序 |
static void shuffle(List list) | 对List中的元素进行随机排序 |
static void sort(List list) | 根据元素的自然顺序对List集合中的元素进行排序 |
static void swap(List list, int i, int j) | 将指定List集合中角标i处元素和j处元素进行交换 |
- 查找、替换操作
Collections类还提供了一些常用方法用于查找和替换集合中的元素:
方法声明 | 功能描述 |
---|---|
static int binarySearch(List list, Object key) | 使用二分法搜索指定对象在List集合中的索引,查找的List集合中的元素必须是有序的 |
static Object max(Collection col) | 根据元素的自然顺序,返回给定集合中最大的元素 |
static Object min(Collection col) | 根据元素的自然顺序,返回给定集合中最小的元素 |
static boolean replaceAll(List list, Object oldVal, Object newVal) | 用一个新值newVal替换List集合中所有的旧值oldVal |
Array工具类
java.util包中,除了针对集合操作提供了一个集合工具类Collections,还针对数组操作提供了一个数组工具类–Arrays工具类.Arrays工具类提供了大量针对数组操作的静态方法.
- 使用sort()方法排序
针对数组排序,数组工具类Arrays还提供了其他多个重载的sort()方法,既可以按照自然顺序进行排序,也可以传入比较器参数进行定制排序,同时还支持选择排序的元素范围.
import java.util.Array;
public class Example27 {
public static void main(String[] args){
int[] arr = {9, 8, 3, 5, 2}; //初始化一个数组
System.out.println("排序前:");
printArray(arr); //打印原数组
Arrays.sort(arr); //调用Arrays的sort()方法排序
System.out.println("排序后:");
printArray(arr); //打印排序后数组
}
//定义打印数组元素方法
public static void printArray(int[] arr){
System.out.print("[");
for(int x=0; x<arr.length; x++){
if(x != arr.length-1){
System.out.print(arr[x] +",");
}else{
System.out.println(arr[x]+"]");
}
}
}
}
- 调用binarySearch(Object[] a, Object key)方法查找元素
程序开发中,经常需要在数组中查找某些特定的元素,如果数组中的元素较多时查找某个元素就会非常繁琐,为此,Arrays工具类中还提供了一个binarySearch(Object[] a, Object key)方法用于查找元素.
import java.util.Arrays;
public class Example28{
public static void main(String[] args){
int[] arr = {9, 8, 3, 5, 2};
Arrays.sort(arr); //对数组进行排序
int index = Arrays.binarySearch(arr, 3); //查找指定元素3
System.out.println("元素3的索引是:" + index);
}
}
binarySearch()方法只能针对排序后的数组进行元素查找,因为该方法采用的是二分查找法.二分法查找,就是每次将指定元素和数组中间位置进行比较,从而排除掉其中的一半元素.
- 使用copyOfRange(int[] original, int from, int to)方法拷贝元素
如果需要在不破坏原数组的情况下,使用数组中的部分元素,这时可以使用Arrays工具类的copyOfRange(int[] original, int from, int to)方法将数组中指定范围的元素拷贝到一个新的数组中. 参数original表示被拷贝的数组,from表示被拷贝元素的初始索引(包括),to表示被拷贝元素的最后索引(不包括).
import java.util.Arrays;
public class Example29{
public static void main(String[] args){
int[] arr = {9, 8, 3, 5, 2};
//拷贝一个指定范围的数组
int[] copied = Arrays.copyOfRange(arr, 1, 7);
//(arr, 1, 7)表示拷贝arr数组从索引1(包括)到索引7(不包括)处对应的元素
//当参数指定的长度超过原数组长度时,新数组中原数组没有元素的位置会放入int类型数组的默认值0
for(int i = 0; i < copied.length; i++){
System.out.print(copied[i] + " ");
}
}
}
- 使用fill(Object[] a, Object val)方法替换元素
程序开发中,可能会需要将一个数组中的元素替换成同一个元素,此时可以用Arrays工具类的fill(Object[] a, Object val)方法,该方法可以将指定的值赋给数组中的每一个元素.
import java.util.Arrays;
public class Example30{
public static void main(String[] args){
int[] arr = {1, 2, 3, 4};
Arrays.fill(arr, 8); //用8替换数组中的每个元素
for(int i = 0; i < arr.length; i++){
System.out.println(i + ":" + arr[i]);
}
}
}