1、forEach的使用
Stream()方法返回串行流,返回的Stream是根据当前数据的顺序进行遍历,parallelStream()
方法返回并行流,并行能提高运行效率,但不能确保执行的顺序,如下,
import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static class Person { int age; Person (int age) { this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public static void main(String[] args) { List<Person> list1 = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(55)); //串行遍历 list1.stream().forEach(o->{ System.out.println("stream() :"+o.getAge()); }); List<Person> list2 = Arrays.asList(new Person(66),new Person(77), new Person(88), new Person(89), new Person(99)); //并行遍历 list2.parallelStream().forEach(o->{ System.out.println("parallelStream() :"+o.getAge()); }); System.exit(0); //success } }
2、filter的使用
使用filter()
可以根据指定条件,筛选出我们需要获取的数据,如下,
import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static class Person { int age; Person (int age) { this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public static void main(String[] args) { List<Integer> numbers = Arrays.asList(12, 74, 5, 8, 16); numbers.stream().filter(n -> n > 10).forEach(System.out::println); List<Person> list1 = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(55)); list1.stream().filter(p -> p.getAge() < 40).forEach(f -> System.out.println("getAge(): "+f.getAge())); System.exit(0); //success } }
相关文档:Java Stream使用多个过滤器(filter)或复杂条件方法用法及简单写法代码
3、使用distinct去除重复数据
distinct()
内部是调用equals
方法,对比对象的值需要重写equals
方法,否则只是比较引用值。
import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static class Person { int age; Person (int age) { this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person p = (Person) o; return p.getAge() == this.age; } @Override public int hashCode() { return Objects.hash(age); } } public static void main(String[] args) { List<Integer> numbers = Arrays.asList(16, 8, 12, 74, 5, 8, 16); numbers.stream().distinct().forEach(System.out::println); List<Person> list1 = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(22), new Person(55), new Person(55)); list1.stream().distinct().forEach(f -> System.out.println("getAge(): "+f.getAge())); System.exit(0); //success } }