Jdk8——day02_1
特点:
- 流本身是一种描述性语言
迭代: 内部迭代和外部迭代
集合关注的是数据与数据存储本身;
流关注的则是对数据的计算;
代码示例:使用stream的方式和使用原始方式对比
package day01;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class StreamDemo {
public static void main(String[] args) {
List<Student> students= Arrays
.asList(new Student("张三",21,"北京"),
new Student("李四",30,"北京"),
new Student("王五",17,"北京"),
new Student("赵丽颖",25,"上海"),
new Student("杨幂",25,"北京"),
new Student("景甜",16,"上海"));
//使用stream流过滤的方法的到排序后的student(内部遍历)
StreamFilterStudent(students);
//使用原始的方法过滤集合中的元素(外部遍历)
fileterStudent(students);
}
//用Stream来过滤数据
public static void StreamFilterStudent(List<Student> students){
students.stream().filter(student -> student.getAge() > 20)
.filter(student -> student.getAddress().equals("北京")).sorted(new Comparator<Student>() {
public int compare(Student o1, Student o2) {
return o1.getAge()- o2.getAge() ;
}
}).forEach(student -> System.out.println(student.getName()));
}
/**
* 普通的方法刷选
*/
public static void fileterStudent(List<Student> students){
List<Student> temp = new ArrayList<>();
List<Student> temp1 = new ArrayList<>();
for (Student stu:students) {
if (stu.getAge()>20){
temp.add(stu);
}
}
for (Student stu:temp){
if (stu.getAddress().equals("北京")){
temp1.add(stu);
}
}
temp1.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge()-o2.getAge();
}
});
for (Student stu:temp1) {
System.out.println(stu.getName());
}
}
}