01_传统集合的多步循环遍历及其弊端
/**
* 过滤集合中,获取名字长度为3,并且名字“周”开头的 列表
*/
public class CollectionTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("周杰伦");
list.add("周洁");
list.add("赵子龙");
list.add("张三丰");
list.add("张翠山");
for(String str: list){
if(str !=null && str.length() == 3 && str.startsWith("周")){
System.out.println(str);
}
}
}
}
02_体验Stream的更优写法
以下使用stream更为简洁
public class CollectionTest2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("周杰伦");
list.add("周洁");
list.add("赵子龙");
list.add("张三丰");
list.add("张翠山");
//使用stream遍历更为简洁
list.stream().filter(s -> s.length()==3).filter(s -> s.startsWith("周")).forEach(System.out::println);
}
}
day03_03_流式思想概述
04_获取流的多种方式
java8 全新引入的Stream API核心接口就是:
java.util.stream.Stream接口
获取流的常用三种方式:
- 通过Collection:直接调用stream()方法
- 通过Map:并不是Collection的子接口,而且其中是键值对儿,不能直接获取,简洁转换成为集合然后获取流
- 通过数组:通过Arrays.stream方法,获取stream.of方法
public class DemoTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
//直接调用.stream
Stream<Integer> stream = list.stream();
Map<String,Integer> map = new HashMap<>();
//获取所有的键对应的流
Stream<String> keyStream = map.keySet().stream();
//获取所有的值对应的流
Stream<Integer> valueStream = map.values().stream();
//获取所有的键值对对应的流
Stream<Map.Entry<String, Integer>> stream3 = map.entrySet().stream();
//通过数组,获取流
String[] array = {"aa","bb","dd"};
Stream<String> stream4 = Arrays.stream(array);
Stream<String> array1 = Stream.of(array);
}
}