Java可变参数
在使用Collections工具类时,会用到addAll方法,其中就要使用到可变参数,因此要求我们必须学会可变参数的定义和使用。JDK5开始引入可变参数,也即方法形参的个数是可以发生变化的,其定义格式为:
格式:属性类型...名字
int...nums
其底层原理就是在实际调用时将传入的可变参数装入一个数组当中。因此,访问此可变参数的实参与访问数组的方法一致,如下代码:
/**
* 可变参数方法示例
* @param nums 可变参数
* @return 所有参数之和
*/
public static int getSum(int ... nums){
int sum = 0;
for (int num : nums) {
sum += num;
}
return sum;
}
此外,定义可变参数方法还有如下两个要求:
- 一个方法最多只能有一个可变参数
- 如果一个方法有多个参数,那么可变参数要位于最后。
例如下面两个方法,第一个是符合要求的,而第二个方法定义则不符合要求:
/**
* 此方法定义是符合要求的
* @param num1
* @param nums
* @return
*/
public static int getSum(int num1, int ... nums){
for (int num : nums) {
num1 += num;
}
return num1;
}
/**
* 错误定义,vararg必须为最后一个形参
* @param nums
* @param num
* @return
*/
public static int getSum(int ... nums, int num){
return num;
}
小结
- 可变参数本质上就是一个数组
2. 作用:在形参中接收多个数据
3. 格式:数据类型…参数名称
举例:int…a
注意事项:
●形参列表中可变参数只能有一个
●可变参数必须放在形参列表的最后面
Java工具类Collections
java.util.Collections:是集合工具类,注意它不是集合类而是集合的工具类,用于操作集合类。
Collections常用的API
方法名称 | 说明 |
public static <T>boolean addAll(Collection<T>c,T...elements) | 批量添加元素。(只能添加类型为T的单列集合) |
public static void shuffle(List<?>list) | 打乱List集合元素的顺序 |
public static <T>void sort(List<T>list) | 排序(按默认规则) |
public static <T>void sort(List<T>list,Comparator<T>c) | 根据指定的规则进行排序 |
public static <T>int binarysearch(List<T>list, T key) | 以二分查找法查找元素 |
public static <T>void copy(List<T>dest,List<T>src) | 拷贝集合中的元素 |
public static <T>int fill(List<T>list,T obj) | 使用指定的元素填充集合 |
public static <T>void max/min(Collection<T>coll) | 根据默认的自然排序获取最大/小值 |
public static <T>void swap(List<?>list,int i,int j) | 交换集合中指定位置的元素 |
示例用法:
//addAll
批量向列表中添加元素
//1.创建集合对象
ArrayList<String>list =new ArrayList<>();
//2.批量添加元素
Collections.addAll(list,"abc","bcd","qwer","df","asdf","zxcv","1234","qwer");
//3.打印集合
System.out.println(list);
//shuffle打乱集合
Collections.shuffle(list);System.out.println(list);