//forEach内部迭代(使用 Collection 接口需要用户去做迭代,称为外部迭代。Stream API 使用内部迭代)
//对一个人员集合遍历,找出男性并打印姓名。
ArrayList<Person> nameList = new ArrayList<>();
nameList.add(new Person("张三",18));
nameList.add(new Person("李四",18));
nameList.stream().forEach(p -> System.out.println(p.getName()));
//limit 返回 Stream 的前面 n 个元素;skip 则是扔掉前 n 个元素
List<Person> persons = new ArrayList();
for (int i = 1; i <= 10000; i++) {
Person person = new Person(i, "name" + i);
persons.add(person);
}
List<String> personList2 = persons.stream().
map(Person::getName).limit(10).skip(3).collect(Collectors.toList());
System.out.println(personList2);
//对 Stream 的排序通过 sorted 进行,它比数组的排序更强之处在于你可以首先对 Stream 进行各类 map、
filter、limit、skip 甚至 distinct 来减少元素数量后,再排序,这能帮助程序明显缩短执行时间。
List<Person> persons = new ArrayList();
for (int i = 1; i <= 5; i++) {
Person person = new Person(i, "name" + i);
persons.add(person);
}
List<Person> personList2 = persons.stream().limit(2).sorted((p1, p2) ->
p1.getName().compareTo(p2.getName())).collect(Collectors.toList());
/*
MatchStream 有三个 match 方法,从语义上说:
allMatch:Stream 中全部元素符合传入的 predicate,返回 true
anyMatch:Stream 中只要有一个元素符合传入的 predicate,返回 true
noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true
*/