1.传统方式遍历List集合
package com.Stream;
import java.util.ArrayList;
import java.util.List;
public class Demo01List {
public static void main(String[] args) {
//创建一个List集合,存储姓名
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
//对List集合中的元素进行过滤,只要以张开头的元素,存储到一个新的集合中
List<String> listA = new ArrayList<>();
for (String s : list) {
if (s.startsWith("张")){
listA.add(s);
}
}
//对listA集合进行过滤,只要姓名长度为3的人,存储到一个新的集合中
List<String> listB = new ArrayList<>();
for (String s : listA) {
if (s.length()==3){
listB.add(s);
}
}
//遍历ListB集合
for (String s : listB) {
System.out.println(s);
}
}
}
2. 使用Stream流的方式,遍历集合
Stream流的方式,遍历集合,对集合中的数据进行过滤
Stream流是JDK1.8之后出现的
关注的是做什么,而不是怎么做
package com.Stream;
import java.util.ArrayList;
import java.util.List;
/*
使用Stream流的方式,遍历集合,对集合中的数据进行过滤
Stream流是JDK1.8之后出现的
关注的是做什么,而不是怎么做
*/
public class Demo02Stream {
public static void main(String[] args) {
//创建一个List集合,存储姓名
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
//对List集合中的元素进行过滤,只要以张开头的元素,存储到一个新的集合中
//对listA集合进行过滤,只要姓名长度为3的人,存储到一个新的集合中
//遍历ListB集合
list.stream().filter((String name)->{
return name.startsWith("张");}).filter((String name)->{
return name.length()==3;}).forEach((String name)->{
System.out.println(name); });
//优化Lambda表达式
list.stream().filter(name->name.startsWith("张"))
.filter(name->name.length()==3)
.forEach(name-> System.out.println(name));
}
}