注意
我们必须要有终结操作,比如forEach(o->Println)
必须要有数据源,stream()
List<User> users = userServiceImpl.getAllUsers();
// 1.创建stream流
users.stream() // 创建stream流
.distinct() // 去重
.filter(each -> each.getAge() < 18) // 通过过滤器筛选
.forEach(each -> System.out.println(each.getName()));
// 遍历操作
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.forEach(each->System.out.println(each));
int[] array = new int[]{1,2,3,4,5};
Arrays.stream(array)
.distinct()
.filter(each->each > 2)
.forEach(each->System.out.println(each));
int[] array = new int[]{1,2,3,4,5};
Stream.of(array)
.distinct()
.filter(each->each > 2)
.forEach(each->System.out.println(each));
Map<String, Integer> map = new HashMap<>();
map.put("迪迦",999);
map.put("戴拿",999);
map.put("盖亚",999);
map.entrySet() // 先把map变成单列集合
.stream() // 再直接创造数据流
.filter(o->o.getValue()>16)
.filter(o->o.getKey().equals("迪迦"))
.forEach(o->System.out.println(o)); // 终结操作
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.map(each->each.getName());
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
public class User implements Comparable<User>{
Integer age;
@Override
public int compareTo(User other){
return this.age - other.age;
}
}
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.sorted()
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.sorted((o1,o2)->o1.getAge()-o2.getAge())
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.sorted((o1,o2)->o1.getAge()-o2.getAge())
.limit(2) // 取出前两个数据
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.sorted((o1,o2)->o1.getAge()-o2.getAge())
.skip(2) // 跳过前两个元素
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
List<User> users = userServiceImpl.getAllUsers();
users.stream() // 获得数据流
.flatMap(each->each.getList().stream())
.forEach(each->System.out.println(each));
// 将每个User对象转换为其name属性
Optional<Integer> max = users
.stream()
.flatMap(author -> author.getBooks().stream())
.max((o1, o2) -> o1 - o2)
System.out.print(max.get());
List<User> users = userServiceImpl.getAllUsers();
List<User> newUsers = users
.stream()
.map(each->each.getAge())
.collect(Collectors.toList());
List<User> users = userServiceImpl.getAllUsers();
List<User> newUsers = users
.stream()
.map(each->each.getAge())
.collect(Collectors.toSet());
List<User> users = userServiceImpl.getAllUsers();
List<User> newUsers = users
.stream()
.filter(each->each.getAge() > 18)
.collect(Collectors.toMap(each->each.getId(), each->each.getName()));
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
Optional<Integer> sum = list.stream()
.reduce((o1,o2)->o1 + o2);
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
boolean exist = list.stream()
.anyMatch(o1->o1 == 3);
List<Integer> list = Arrays.asList(1,2,3,4,5);
Optional<Integer> first = list.stream()
.sorted((o1,o2)->o1-o2)
.findFirst();
first.ifPresent(o->System.out.println(o));
reduce:归并操作,将stream流中的元素进行归并操作。
List<Integer> list = Arrays.asList(1,2,3,4,5,6);
Integer sum = list.stream()
.reduce(0, (r,e)->r + e)
// 表示从0开始,result+element
// 使用reduce求最小值
List<Integer> list = Arrays.asList(1,2,3,4,5,6);
Integer min = list.stream()
.reduce(Integer.MAXVALUE, (r, e) -> r > e ? e : r);
List<Users> list = userService.getAll();
Optional<List<User>> usersOptions = Optional.ofNullable(list);
userOptions.ifPresent(each->System.out.println(each));
User user = new User("aaa","bbb");
Optional<User> userOptions = Optional.ofNullable(user);
User user = userOptions.orElseGet(()->new User("ccc","ddd"));
System.out.println(user.toString());