/**
* @author hsw
* @Date 14:36 2018/7/11
*/
@Data
public class Boy {
private String name;
private int age;
public Boy(String name, int age) {
this.name = name;
this.age = age;
}
}
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @author hsw
* @Date 14:40 2018/7/11
*/
@Slf4j
public class Test {
public static void main(String[] args) {
Boy b1 = new Boy("a",13);
Boy b2 = new Boy("a",14);
Boy b3 = new Boy("b",15);
Boy b4 = new Boy("c",16);
Boy b5 = new Boy("a",17);
Boy b6 = new Boy("d",18);
//获取一个boys集合
List<Boy> boys= Arrays.asList(b1,b2,b3,b4,b5,b6);
//boys集合中所有姓名为a的数据组成集合
List<Boy> result = boys.stream().filter(a -> "a".equals(a.getName())).collect(Collectors.toList());
//循环输出boys集合中所有姓名为a的数据
// boys.stream().filter(a -> "a".equals(a.getName())).forEach(System.out::println);
//boys集合中的name集合
List<String> result2 = boys.stream().map(Boy::getName).collect(Collectors.toList());
//降序输出boys中的age
boys.stream().map(Boy::getAge).sorted((a,b) -> b.compareTo(a)).forEach(System.out::println);
//获取第一个姓名为a的数据
Optional<Boy> firstA= boys.stream().filter(a -> "a".equals(a.getName())).findFirst();
//name集合中是否有d开头的名字
Boolean boolean1 = result2.stream().anyMatch((s) -> s.startsWith("d"));
System.out.println(boolean1);
//name集合中是否全部是d开头的名字
Boolean boolean2 = result2.stream().allMatch((s) -> s.startsWith("d"));
System.out.println(boolean2);
//name集合中是否没有d开头的名字
Boolean boolean3 = result2.stream().noneMatch((s) -> s.startsWith("d"));
System.out.println(boolean3);
//降序拼接name集合
Optional<String> reduced = result2.stream().sorted((a,b) -> b.compareTo(a)).reduce((s1, s2) -> s1 + "#" + s2);
reduced.ifPresent(log::info);
}
}