day10——stream流

可变参数

可变参数指的是,方法参数的个数可以发生改变。但是其本质是一个数组,在方法把可变参数当做数组来使用就可以了。

注意:在方法把可变参数当做数组来使用!不可以当成普通的单个参数使用!

//可变参数的格式:数据类型...参数名
public static void 方法名(数据类型... 参数名){
  ...
}

求多个整数的和,代码如下

public static void main(String[] args){
  getSum(1,2,3,4,5); //15
  getSum(1,2,3); //6
  
  int[] array={1,2,3,4,5};
  getSum(array); //15
}

//求多个整数的和
public static void getSum(int... array){
	int sum=0;
  for(int i=0;i<array.length;i++){
    sum+=array[i];
  }
  System.out.println("所有整数的和为:"+sum);
}

创建不可变的集合

//创建List集合,并添加元素
List<元素类型> list= List.of(元素1,元素2....);

//创建Set集合,并添加元素
Set<元素类型> set = Set.of(元素1,元素2....);

//创建Map集合,并添加元素
Map<键的类型,值的类型>  map = Map.of(1,1,2,2);
Map<键的类型,值的类型>  map = Map.ofEntries(Map.entry(1,1),Map.entry(2,2));

Stream流

Stream流指的是流式编程,可以让我们操作集合或者数组的时候更加方便。

Stream流的操作步骤

在这里插入图片描述

获取流操作

//单列集合获取流
Stream<元素类型>  s1 = 集合名.stream();
//双列集合获取流
Stream<键的类型>  s2 = map.keySet().stream();
Stream<值的类型>  s3 = map.values().stream();
Stream<键值对的类型>  s5 = map.entrySet().stream();
//数组获取流
Stream<元素类型>  s6 = Arrays.stream(数组名);
//多个数据获取流
Stream<元素类型>  s7 = Stream.of(元素1,元素2...);

转换流操作

fliter: 对流中的元素进行过滤
limit: 截取前面的n个元素
skip:  跳过前面的n个元素
concat: 合并两个流对象(注意:只能合并两个流,不能多个流)
  	Stream s = Stream.concat(1,2);
distinct: 去重除重复元素
    去重s = Stream.distinct(1,2);
  	如果元素的hashCode和euqals判断都相同,才认为元素重复(自定义类需要重写HashCode和equals方法)

终结操作

forEach: 遍历元素
count: 元素个数
collect: 把流中的元素收集到集合中
		Collectors.toList(); //转换为List集合
		Collectors.toSet(); //转换为Set集合
		Collectors.toMap(
				lambda表达式1, //返回键
				lambda表达式2, //返回值
		); //转换为Map集合

Stream流练习

ArrayList<String> list1=new ArrayList<>();
list1.add("杨过");
list1.add("杨简");
list1.add("张三丰");
list1.add("张无忌");
list1.add("刘德华");

ArrayList<String> list2=new ArrayList<>();
list2.add("杨幂");
list2.add("杨紫");
list2.add("刘曼");
list2.add("黄晶");
list2.add("张柏芝");
list2.add("张曼玉");

//1.获取男演员的三个字的姓名,截取前面前面2个
Stream<String> s1 = list1.stream().filter(s -> s.length() == 3).limit(2);

//2.获取女演员的两个字的姓名, 跳过前面1个
Stream<String> s2 = list2.stream().filter(s -> s.length() == 2).skip(1);

//3.把男演员和女演员合并
Stream<String> s3 = Stream.concat(s1, s2);

//4.把剩下的所有姓名,封装为Actor对象
s3.forEach(s-> System.out.println(new Actor(s)));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值