/**
* Created by Monologue_zsj on 2021/5/10 20:37
* Author:小脸儿红扑扑
* Description:题目:请按照给出数据,找出同时满足以下条件的用户,也即以下条件全部满足
* 偶数工D且年龄大于24且用户名转为大写且用户名字母倒排序
* 只输出一个用户名字
*/
public class StreamDemo {
public static void main(String[] args) {
User user1 = new User(11, "a", 23);
User user2 = new User(12, "b", 24);
User user3 = new User(13, "c", 22);
User user4 = new User(14, "d", 28);
User user5 = new User(16, "e", 26);
List<User> list = Arrays.asList(user1, user2, user3, user4, user5);
list.stream()
.filter(t -> t.getId() % 2 == 0)
.filter(t -> t.getAge() > 24)
.map(m -> m.getName().toUpperCase())
.sorted(((o1, o2) -> o2.compareTo(o1)))
.limit(1)
.forEach(System.out::println);
System.out.println("=================我是分割线=================");
/*四大函数式接口*/
/*函数型接口Function<T, R> 输入类型T,返回类型R*/
Function<String, Integer> function = s -> s.length();
;
System.out.println(function.apply("abc"));
/*断定型接口Predicate<T> 参数类型T, 返回类型Boolean*/
Predicate<String> predicate = s -> s.isEmpty();
System.out.println(predicate.test(""));
/*消费性接口Consumer<T> 参数类型T, 返回值类型 void*/
Consumer<String> consumer = s -> System.out.println(s);
consumer.accept("小张");
/*供给型接口 Supplier<T> ,参数类型 无 返回值类型 T*/
Supplier<String> supplier = () -> "123";
System.out.println(supplier.get());
}
}
class User implements Serializable {
private Integer id;
private String name;
private Integer age;
public User() {
}
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
具体方法参考JDK8的官方文档