1.将一个数组里面的负数变为正数输出arr = {1, -2, 4, 5, -7};
@Test
public void test1() {
int[] arr = {1, -2, 4, 5, -7};
Arrays.stream(arr).map(a->Math.abs(a)).forEach(s->System.out.println(s));
}
2.有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用Stream将以郭字开头的元素存入新数组
@Test
public void test2() {
List<String> list = Arrays.asList("黄药师", "冯蘅", "郭靖", "黄蓉", "郭芙", "郭襄", "郭破虏");
list.stream().filter(s -> s.startsWith("郭")).forEach(s-> System.out.println(s));
}
3.取用前几个:limit、跳过前几个:skip
已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风},使用Stream
1、取出前2个元素并在控制台打印输出。
2、取出后2个元素并在控制台打印输出。
4.练习四: map
给定一个数字列表,如何返回一个由每个数的平方构成的列表呢?
比如给定【1,2,3,4,5】, 应该返回【1,4,9,16,25】。
@Test
public void test4() {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> collect = list.stream().map(s -> s * s).collect(Collectors.toList());
System.out.println(collect);
}
5.有两个集合,一个有6个男演员,一个有6个女演员,完成下面的功能
男演员只要名字为3个字的前三人
女演员只要姓林的,并且不要第一个
把过滤后的男演员姓名和女演员姓名合并到一起
把上一步操作后的元素作为构造方法的参数创建演员对象(实例化一个Actor类,此处尝试使用map),遍历数组
@Test
public void test5() {
List<String> manList = Arrays.asList("刘德华", "成龙", "吴彦祖", "周润发", "周星驰", "吴京");
ArrayList<String> womanList = new ArrayList<>();
womanList.add("林心如");
womanList.add("孙俪");
womanList.add("柳岩");
womanList.add("林青霞");
womanList.add("王祖贤");
womanList.add("张曼玉");
Stream.concat(manList.stream().filter(s -> s.length() == 3).limit(3),
womanList.stream().filter(s -> s.startsWith("林")).skip(1)).map(Actor::new).forEach(p-> System.out.println(p.getName()));
}
public class Actor {
private String name;
public Actor() {
}
public Actor(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}