package com.it.Stream;
import com.it.Lambda.Person;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
/*StreamAPI2.映射的应用*/
public class StreamAPI2 {
@Test
public void test() {
ArrayList<Person> list = new ArrayList<>();
Person p1 = new Person("黄子韬", 23);
Person p2 = new Person("赵颖", 21);
Person p3 = new Person("范冰冰", 20);
Person p4 = new Person("王菲", 20);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
//1,通过集合将Stream实例化
Stream<Person> stream = list.stream();
//map方法, 通过接收一个函数, 将每个元素映射称为一个新的元素
stream.map(e -> e.getAge() + 1).forEach(System.out::println);
System.out.println();
}
//练习: 获取姓名长度大于3的姓名
@Test
public void test1(){
ArrayList<Person> list = new ArrayList<>();
Person p1 = new Person("黄子韬", 23);
Person p2 = new Person("赵颖", 21);
Person p3 = new Person("范冰冰", 20);
Person p4 = new Person("王菲", 20);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
//1,通过集合将Stream实例化
Stream<Person> stream = list.stream();
Stream<String> stringStream = stream.map(Person::getName);
stringStream.filter(e->e.length()>1).forEach(System.out::println);
}
@Test
public void test2(){
List<String> list = Arrays.asList("aa", "bc", "df", "gh");
//获取Stream实例
Stream<Stream<Character>> streamStream = list.stream().map(StreamAPI2::getFromStringToStream);
streamStream.forEach(e->{e.forEach(System.out::println);});
System.out.println();
Stream<Character> characterStream = list.stream().flatMap(StreamAPI2::getFromStringToStream);
characterStream.forEach(System.out::println);
}
//将字符串转换为由多个字符组成的集合的Stream 的实例
public static Stream<Character> getFromStringToStream(String s){
ArrayList<Character> list = new ArrayList<>();
for (char c : s.toCharArray()){
list.add(c);
}
return list.stream();
}
//3.排序
@Test
public void test3(){
ArrayList<Person> list = new ArrayList<>();
Person p1 = new Person("黄子韬", 23);
Person p2 = new Person("赵颖", 21);
Person p3 = new Person("范冰冰", 20);
Person p4 = new Person("王菲", 20);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
/*list.stream().sorted().forEach(System.out::println);*/
list.stream().sorted((e1,e2)->-Integer.compare(e1.getAge(),e2.getAge())).forEach(System.out::println);
}
}
StreamAPI的应用
最新推荐文章于 2022-08-21 21:38:38 发布