1可变参数(参数类型...变量名)
-
什么是可变参数?
参数个数可变的参数
-
有啥用?
解决方法仅仅因为参数个数不同而复写的冗余性
-
使用注意
-
方法中的可变参数只能有一个
-
方法的参数有多个时,可变参数必须放在最后
-
2.Stream流
作用
-
简化代码的书写
-
延迟执行,节省资源,提高效率
2.1获取方法
-
单列集合
集合对象.Stream
-
双列集合
通过keySet或者entrySet获取一个集合,再获取Stream流
-
数组
Arrays.Stream(数据对象);
-
同种数据类型的多个数据
Stream.of(数据)
2.2中间方法
方法 | 作用 |
---|---|
.filter(判断条件) | 用来过滤流中的数据,是一个延迟方法(startwith)(返回值类型仍然是流类型,其实是布尔型,true留,false删) |
limit(long n) | 截取前n个 |
skip | 跳过前n个 |
Stream.concat(stream01,stream02) | 合并两个流,是一个静态方法 |
distinct | 去除流中重复数据 |
sorted | 对数据自然排序 |
sorted(Comparator<T>c) | 比较器排序 |
2.3终结方法
方法名 | 作用 |
---|---|
forEach | 遍历流中数据 |
long count() | 获取流中元素的个数 |
2.4收集方法
collect(Collector collector) 返回新的流对象 | 将流中数据收集到集合中(toList&toSet&toMap) |
ArrayList <String> list=new ArrayList<>(); Collections.addAll(list,"张无忌","张三丰","张翠山","张良","谢广坤","谢广坤"); //filter,forEach list.stream().filter(s->s.startsWith("张")) .filter(s->s.length()==3) .forEach(s-> System.out.println(s)); //limit list.stream().limit(2).forEach(s-> System.out.println(s)); //skip list.stream().skip(4).forEach(s-> System.out.println(s)); //定义第二个集合配合下面操作 ArrayList<String>list1= new ArrayList<>(); list1.addAll(list); //concat Stream.concat(list.stream(),list1.stream()).forEach(s-> System.out.println(s)); //distinct list.stream().distinct().forEach(s-> System.out.println(s)); //count System.out.println( list.stream().distinct().count()); //toList List<String>list2=list.stream().filter(s->s.length()==3).collect(Collectors.toList()); list2.forEach(s-> System.out.println(s)); //toSet Set<String>set=list.stream().filter(s->s.length()==3).collect(Collectors.toSet()); set.forEach(s-> System.out.println(s)); //toMap ArrayList<String>list=new ArrayList<>(); list.add("张三,23"); list.add("李四,24"); list.add("王五,25"); Map<String,Integer>map= list.stream().filter(s->Integer.parseInt(s.split(",")[1])>=24 ).collect(Collectors.toMap( s->s.split(",")[0], s->Integer.parseInt(s.split(",")[1]) ));