欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Java Stream流

Java Stream流

2024/11/30 14:42:41 来源:https://blog.csdn.net/Aishangyuwen/article/details/143898573  浏览:    关键词:Java Stream流

        Stream流就相当于创建一条流水线,并将数据放在流水线上准备对其进行处理。

package streamExercise;/*** Stream流练习**/
public class StreamExercise {public static void main(String[] args) {// 不使用Stream流//        // 需求:有个存储了名字的集合,需要将以“张”开头,长度为3的元素拷贝到另一个集合
//        List<String> list = new ArrayList<>();
//        List<String> copyList = new ArrayList<>();
//        Collections.addAll(list, "张三", "李四", "王五", "张三丰","张无忌","张翠山","王二麻子","张良","谢广坤");for (String s : list) {if (s.startsWith("张") && s.length() == 3) {copyList.add(s);}}System.out.println(copyList);
//
//        // 使用Stream流便捷添加
//        list.stream()
//                .filter(s -> s.startsWith("张"))
//                .filter(s -> s.length() == 3)
//                .forEach(s -> copyList.add(s));
//        System.out.println(copyList);// Stream流的好处// 直接阅读代码的字面意思就可以完美展示代码逻辑:// 1.从list集合获取一个Stream流// 2.过滤所有以张开头的元素// 3.过滤所有长度=3的元素// 4.遍历所有过滤之后剩下的元素,并加入到copyList集合中// Stream流具有鲜明的函数式编程的风格// 代码简洁// Stream流的思想// 1.首先需要获取Stream流:就相当于创建一条流水线,并将数据放在流水线上准备对其进行处理// 2.中间方法:流水线上对于数据的操作,一次操作完毕之后,还可以继续其他操作(相当于一个Stream流中可以有多个中间方法)// 3.终结方法:流水线上的最后一个操作,Stream流只能有一个终结方法// 生成Stream流的方式// 1.Collection体系的集合:使用默认的stream()方法生成流// 2.Map体系集合:将Map转为Set集合,间接生成流// 3.数组:通过Arrays中的静态方法stream生成流// 4.同种数据类型的多个数据:Stream接口的静态方法of(T...values)生成流//        // Collection体系的集合都可以使用自带的Stream()方法生成流
//        List<String> newList = new ArrayList<>();
//        Stream<String> streamList = newList.stream();
//
//        Set<String> newSet = new HashSet<>();
//        Stream<String> stream = newSet.stream();
//
//        // Map体系集合间接生成的流
//        Map<String, String> map = new HashMap<>();
//        Stream<String> mapStream = map.keySet().stream();
//        Stream<String> mapStream1 = map.values().stream();
//        Stream<Map.Entry<String, String>> mapStream2 = map.entrySet().stream();
//
//        // 数组通过Arrays中的静态方法生成流
//        String[] strArray = {"hello", "world", "haha"};
//        Stream<String> arrayStream = Arrays.stream(strArray);
//
//        // 多个同种类型的数据可以通过Stream接口的静态方法of生成流
//        Stream<String> hello = Stream.of("hello", "world", "haha");
//        Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);}
}

        Stream综合练习

package streamExercise;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/*** Stream流的练习**/
public class StreamExercise2 {public static void main(String[] args) {
//        案例需求
//        现在有两个ArrayList集合,分别存储6名男演员名称和6名女演员名称,要求完成如下的操作
//
//        男演员只要名字为3个字的前三人
//        女演员只要姓林的,并且不要第一个
//        把过滤后的男演员姓名和女演员姓名合并到一起
//        把上一步操作后的元素作为构造方法的参数创建演员对象,遍历数据
//        演员类Actor已经提供,里面有一个成员变量,一个带参构造方法,以及成员变量对应的get/set方法ArrayList<String> manList = new ArrayList<String>();manList.add("周润发");manList.add("成龙");manList.add("刘德华");manList.add("吴京");manList.add("周星驰");manList.add("李连杰");ArrayList<String> womanList = new ArrayList<String>();womanList.add("林心如");womanList.add("张曼玉");womanList.add("林青霞");womanList.add("柳岩");womanList.add("林志玲");womanList.add("王祖贤");Stream<String> man = manList.stream().filter(s -> s.length() == 3).limit(3);Stream<String> woman = womanList.stream().filter(s -> s.startsWith("林")).skip(1);List<String> name = Stream.concat(man, woman).toList();List<Actor> actors = new ArrayList<>();for (String s : name) {Actor actor = new Actor(s);actors.add(actor);}for (Actor actor : actors) {System.out.println(actor);}}
}class Actor{private String name;public Actor(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "我是演员" + this.name;}
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com