1._forEach
用来遍历流中的数据
public class Demo1ForEach {
public static void main(String[] args) {
//获取Stream流
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六");
//使用Stream流中的forEach方法进行遍历
stream.forEach((name) -> System.out.println(name));
}
}
2._filer

public class Demo1Filter {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "张七");
Stream<String> stream2 = stream.filter(name -> name.startsWith("张"));
Stream2.forEach(name -> System.out.println(name));
/*
Stream流属于管道流,只能被消费(使用)一次
第一个Stream流调用完毕后,数据会流转到下一个Stream上
而这时第一个stream流已经使用完毕,就会关闭
所以第一个Stream流就不能再调用方法了
*/
}
}
3._map

/*
若果需要将六中的元素映射到另一个流中,可以使用map方法
<R> Stream<R> map(Function<? super T,? extends R> mapper);
该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流
Function中的抽象方法
R apply(T t);
*/
public class Demo1Map {
public static void main(String[] args) {
Stream<String> stream = Stream.of("1", "2", "3", "4", "5");
Stream<Integer> integerStream = stream.map(num -> Integer.parseInt(num));
integerStream.forEach((integer)->{
System.out.println(integer);
});
}
}
4._count
用于统计Stream流中元素的个数
long count();
count方法是一个终结方法,返回一个long类型的整数
所以不能再继续调用Stream流中的其他方法
public class Demo1Count {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "张七");
Stream<String> stream1 = stream.filter((name) -> name.startsWith("张"));
System.out.println(stream1.count());
}
}
5._limit

public class Demo1Limit {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "张七");
Stream<String> limitfor2 = stream.limit(2);
limitfor2.forEach(name -> System.out.println(name));
}
}
6._skip
skip用于跳过元素
如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流
Stream skip(long n)
若果流的当前长度大于n,则跳过前那个;否则将会得到一个长度为0的空流

public class Demo1skip {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "张七");
Stream<String> stream1 = stream.skip(2);
stream1.forEach(name -> System.out.println(name));
}
}
7._concat
用于把流组合到一起
如果有两个流,希望合并成一个流,那么可以使用Stream接口的静态方法concat
static Stream concat(Stream<? extends T> a, Stream<? extends T> b)
public class DemoCancat {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "张七");
Stream<String> stream1 = Stream.of("1", "2", "3", "4", "5");
Stream<String> stream2 = Stream.concat(stream,stream1);
stream2.forEach(name -> System.out.println(name));
}
}
练习:集合元素处理
现有两个ArrayList集合储存队伍中的多个成员名字,第一个队伍只要名字为3个字的成员的前3个人,第二个队伍只要第二个字符为洋的不要钱2个人的名字,并把两个队伍合并成一个队伍,储存一个新的集合,根据姓名创建Person对象;醋纯到一个新集合,打印整个队伍的Person对象信息
public class Demo3Stream {
public static void main(String[] args) {
ArrayList<String> one = new ArrayList<>();
one.add("张三三");
one.add("李四");
one.add("王五五");
one.add("赵六六");
one.add("田七七");
Stream<String> oneStream = one.stream().filter(name -> name.length() == 3).limit(3);
ArrayList<String> two = new ArrayList<>();
two.add("喜洋洋");
two.add("懒洋洋");
two.add("美洋洋");
two.add("灰太狼");
two.add("红太狼");
Stream<String> twoStream = two.stream().filter(name -> name.startsWith("洋", 1)).skip(2);
Stream.concat(oneStream, twoStream).map((name) -> new Persion(name)).forEach(name -> System.out.println(name));
}
}
本文深入探讨Java Stream API的核心操作,包括forEach遍历、filter过滤、map映射、count计数、limit限制、skip跳过及concat连接等方法。通过实战案例,如处理集合元素、筛选特定条件的成员及合并流,展示Stream API的强大功能。
2604

被折叠的 条评论
为什么被折叠?



