1.Stream
得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。
现有一个需求:将list集合中姓张的元素过滤到一个新的集合中。
使用list集合方法和流方法:
public class Demo20 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张三");
list.add("张小三");
list.add("李四");
list.add("王五");
list.add("张大山");
method1(list);
}
//用list普通方法
public static void method1(List<String> list){
for (String s : list) {
if (s.startsWith("张")){
System.out.println(s);
}
}
}
//用Stream流方法
public static void method2(List<String> list){
//先将集合对象转换为流的对象
list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
}
}
1.1获取流的对象
根据集合获取流,将集合中的数据变成流的形式
Collection接口下面的方法stream();
1.根据List获取流对象
public class Demo20 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张三");
list.add("张小三");
list.add("李四");
list.add("王五");
//获取流的对象
Stream<String> stream = list.stream();
//打印出来是一个地址
System.out.println(stream);
}
}
2.Set也可以获取stream对象
public class Demo10 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("西西");
set.add("哈哈");
set.add("李爱");
//将set集合转为流对象
Stream<String> stream = s