[Java基础]Stream流的常见中间操作方法
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java基础]Stream流的常见中间操作方法相关的知识,希望对你有一定的参考价值。
代码如下:
package StreamTest;
import java.util.ArrayList;
public class StreamDemo02 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Bom");
list.add("jack");
list.add("张无忌");
list.add("张敏");
list.add("张曼玉");
//需求1:把list集合中以张开头的元素在控制台输出
// list.stream().filter((String s)->{return s.startsWith("张");}).forEach(System.out::println);
list.stream().filter(s->s.startsWith("张")).forEach(System.out::println);
System.out.println("--------------------------");
//需求2:把list集合中长度为3的元素在控制台输出
list.stream().filter(s->s.length()==3).forEach(System.out::println);
System.out.println("--------------------------");
//需求3:把list集合中以张开头的,长度为3的元素在控制台输出
list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);
}
}
代码如下:
package StreamTest;
import java.util.ArrayList;
public class StreamDemo03 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Bom");
list.add("jack");
list.add("张无忌");
list.add("张敏");
list.add("张曼玉");
//需求1:取前3个数据在控制台输出
list.stream().limit(3).forEach(System.out::println);
System.out.println("-----------------------------");
//需求2:跳过3个元素,把剩下的元素在控制台输出
list.stream().skip(3).forEach(System.out::println);
System.out.println("-------------------------------");
//需求3:跳过2个元素,把剩下的元素中前2个在控制台输出
list.stream().skip(2).limit(2).forEach(System.out::println);
}
}
代码如下:
package StreamTest;
import java.util.ArrayList;
import java.util.stream.Stream;
public class StreamDemo04 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Bom");
list.add("jack");
list.add("张无忌");
list.add("张敏");
list.add("张曼玉");
//需求1:取前4个数据组成一个流
Stream<String> s1 = list.stream().limit(4);
//需求2:跳过2个数据组成一个流
Stream<String> s2 = list.stream().skip(2);
//需求3:合并需求1和需求2得到的流,并把结果在控制台输出
Stream.concat(s1,s2).forEach(System.out::println);
}
}
package StreamTest;
import java.util.ArrayList;
import java.util.stream.Stream;
public class StreamDemo04 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Bom");
list.add("jack");
list.add("张无忌");
list.add("张敏");
list.add("张曼玉");
//需求1:取前4个数据组成一个流
Stream<String> s1 = list.stream().limit(4);
//需求2:跳过2个数据组成一个流
Stream<String> s2 = list.stream().skip(2);
//需求4:合并需求1和需求2得到的流,并把结果在控制台输出,要求字符串元素不能重复
Stream.concat(s1,s2).distinct().forEach(System.out::println);
}
}
代码如下:
package StreamTest;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class StreamDemo05 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("linqinxia");
list.add("baobo");
list.add("jack");
list.add("zhangmanyu");
list.add("tangbohu");
list.add("mike");
//需求1:按照字母顺序把数据在控制台输出
list.stream().sorted().forEach(System.out::println);
System.out.println("----------------------------------");
//需求2:按照字符串长度把数据在控制台输出
list.stream().sorted((s1,s2)->{
int num = s1.length()-s2.length();
int num1 = num==0?s1.compareTo(s2):num;
return num1;
}).forEach(System.out::println);
}
}
代码如下:
package StreamTest;
import java.util.ArrayList;
public class StreamDemo06 {
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("10");
list.add("20");
list.add("30");
list.add("40");
list.add("50");
// list.stream().map(s->Integer.parseInt(s)).forEach(System.out::println);
list.stream().map(Integer::parseInt).forEach(System.out::println);
System.out.println("--------------------------");
list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
//int sum()返回此流元素的总和,该方法只在IntStream
int result = list.stream().mapToInt(Integer::parseInt).sum();
System.out.println(result);
}
}
以上是关于[Java基础]Stream流的常见中间操作方法的主要内容,如果未能解决你的问题,请参考以下文章