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
}
}