1.可变参数
代码示例
public class ArgsDemo01 {
public static void main(String[] args) {
System.out.println(sum(10, 20));
System.out.println(sum(10, 20, 30));
System.out.println(sum(10, 20, 30, 40));
System.out.println(sum(10,20,30,40,50));
}
// public static int sum(int b,int... a) { //可变参数,必须放最后
// return 0;
// }
public static int sum(int... a) {
int sum = 0;
for(int i : a) {
sum += i;
}
return sum;
}
}
要点
可变参数在什么时候用?
当一个方法,参数类型一致,参数个数不确定
格式是?
例如:多个int数求和
public int getSum(int... arr)
可变参数本质是?
数组
可变参数的注意事项?
如果有其他参数,可变参必须放后面
可变参数的应用场景:
参数类型相同,个数不确定,
例如:多个int数求和
可变参数的格式:
public 返回值类型 方法名(数据类型... 参数名) {
}
可变参数的理解:
可变参数,底层是数组!!
可变参数的注意:
1.如果还有其他参数,可变参数必须放最后!
2.一个方法只能定义一个可变参数
可变参数的特殊写法:
show(Object... args): 可以传任意对象,任意个数
2.创建不可变的集合
代码示例
public class MyVariableParameter4 {
public static void main(String[] args) {
// static <E> List<E> of(E…elements) 创建一个具有指定元素的List集合对象
//static <E> Set<E> of(E…elements) 创建一个具有指定元素的Set集合对象
//static <K , V> Map<K,V> of(E…elements) 创建一个具有指定元素的Map集合对象
//method1();
//method2();
//method3();
//method4();
}
private static void method4() {
Map<String, String> map = Map.ofEntries(
Map.entry("zhangsan", "江苏"),
Map.entry("lisi", "北京"));
System.out.println(map);
}
private static void method3() {
Map<String, String> map = Map.of("zhangsan", "江苏", "lisi", "北京", "wangwu", "天津");
System.out.println(map);
}
private static void method2() {
//传递的参数当中,不能存在重复的元素。
Set<String> set = Set.of("a", "b", "c", "d","a");
System.out.println(set);
}
private static void method1() {
List<String> list = List.of("a", "b", "c", "d");
System.out.println(list);
//list.add("Q");
//list.remove("a");
//list.set(0,"A");
//System.out.println(list);
// ArrayList<String> list2 = new ArrayList<>();
// list2.add("aaa");
// list2.add("aaa");
// list2.add("aaa");
// list2.add("aaa");
//集合的批量添加。
//首先是通过调用List.of方法来创建一个不可变的集合,of方法的形参就是一个可变参数。
//再创建一个ArrayList集合,并把这个不可变的集合中所有的数据,都添加到ArrayList中。
ArrayList<String> list3 = new ArrayList<>(List.of("a", "b", "c", "d"));
System.out.println(list3);
}
}
扩展: 数组转List集合
List Arrays.asList();
String[] arr = {
"a","b","c"};
List<String> list = Arrays.asList(arr);
System.out.println(list);
//注意
//1.返回的集合不能修改
//2.必须是引用类型数组
//数组转集合?
List Arrays.asList(数组);
//集合转数组?
toArray(T[] arr);
3.初步认识Stream流
- 原始方式示例代码
public class MyStream1 {
public static void main(String[] args) {
//集合的批量添加
ArrayList<String> list1 = new ArrayList<>(List.of("张三丰","张无忌","张翠山","王二麻子","张良","谢广坤"));
//list.add()
//遍历list1把以张开头的元素添加到list2中。
ArrayList<String> list2 = new ArrayList<>();
for (String s : list1) {
if(s.startsWith("张")){
list2.add(s);
}
}
//遍历list2集合,把其中长度为3的元素,再添加到list3中。
ArrayList<String> list3 = new ArrayList<>();
for (String s : list2) {
if(s.length() == 3){
list3.add(s);
}
}
for (String s : list3) {
System.out.println(s);
}
}
}
- 使用Stream流示例代码
public class StreamDemo {
<