可变参数
是JDK1.5后出现的新特性。
使用前提:
当方法的参数列表的数据类型已经确定,但是个数不确定。
使用格式:定义方法时使用
修饰符 返回值类型 方法名(数据类型…变量名){}
原理:
可变参数底层是一个数据,根据传递参数个数的不同,会创建不同长度的数组,来存储这些参数,传递的参数个数,可以是0个(不传递),或者多个。
注意事项:
- 一个方法的参数列表,值能有一个可变参数
public String fun(String...name,int...a);//错误
- 如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。
public int fun(int a,int b,String...name);
- 可变参数的终极写法
public void fun(Object...arr);
public class DemoVarArgs{
/*
定义计算(0-n)整数和的方法,数据类型为int
*/
public satic int add(int...arr){
// sysout(arr);//数组地址
int sum=0;
for(int i:arr){
sum += i;
}
return sum;
}
}
Collections
集合工具类,用来对集合进行操作。
方法
addALL();
public static <T> boolean addAll(Colleation<T>
ArrayList<Integer> list = new ArrayList<>();
c,T...elements);
Collections.addAll(list,1,2,3,4,5);
public static void shuffle(list<?> List);
ArrayList<Integer> list = new ArrayList<>();
Collections.shuffle(list);
public static<T> void sort(List<T> list);
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
Collections.sort(list);//1,2,3 默认升序
//字符串也是升序排序
ArrayList<Person> list01 = new ArrayList<>();
list01.add(new Person("张三",30));
list01.add(new Person("李四",30));
list01.add(new Person("王五",30));
Collections.sort(list01);//编译报错,如果需要对人进行排序,被排序的对象必须实现Comparable接口,重写接口中的方法CompareTo,定义排序规则
public class Person implements Comparable{
private String name;
private int age;
pulbic int CompareTo(Person O){
return this.getAge()-O.getAge();
}
}
public static<T> void sort(List<T> list,Comparator<? super T>);
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
Collections.sort(list, new Comparator<Integer>(){
public int compare(Integer o1,Integer o2){
return o1-o2;
//可以多层规则,
int result = o1.getAge()-o2.getAge();
if(result==0){
result= o1.getName().charAt(0)-o2.getName().charAt(0);
}
return result;
}
});