JAVA8-Stream创建

admin
2022-09-07 / 0 评论 / 68 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年09月08日,已超过590天没有更新,若内容或图片失效,请留言反馈。

创建Stream

创建Stream方式:

  • 创建Stream的方式
  • 1、通过Collection
  • 2、通过values
  • 3、通过Arrays
  • 4、通过file
  • 5、通过iterate创建,无限的创建
  • 6、通过Generate创建
  • 7、自定义Supplier,创建Stream

使用范例

1、Collection创建,输出值顺序与之前放入值顺序一致。

范例:

    /**
     * 通过Collection创建Stream,数据顺序和放入顺序一致
     * @return
     */
    public static Stream<String> createStreamByCollection(){
        List<String> list = Arrays.asList(new String("Hello"), new String("world"), new String("please"));
        return list.stream();
    }
2、values创建,输出值顺序与之前放入值顺序一致。

范例:

    /**
     * 通过values创建Stream,顺序一直
     * @return
     */
    public static Stream<String> createStreamByValues(){
        return Stream.of("Hello","world","please");
    }
3、Arrays创建,输出值顺序与之前放入值顺序一致。

范例:

    /**
     * 3、通过Arrays创建,顺序一致
     * @return
     */
    public static Stream<String> createStreamByArrays(){
        return Arrays.stream(new String[]{"Hello","world","please"});
    }
4、File创建

范例:

    /**
     * 4、通过file创建
     * @return
     */
    public static Stream<String> createStreamByFile(){
        Path path = Paths.get("D:\\software\\workspace\\IdeaProjects\\study\\study-java8\\src\\main\\java\\com\\example\\study\\java8\\streams\\CreateStream.java");
        try {
            Stream<String> stream = Files.lines(path);
            return stream;
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage());
        }
    }
5、iterate无限的创建

范例:

    /**
     * 5、通过iterate创建,无限的创建
     * @return
     */
    public static Stream<Integer> createStreamByIterate(){
        return Stream.iterate(0, n->n+2).limit(10);    
    }
   
6、Generate创建

范例:

    /**
     * 6、通过Generate创建
     * @return
     */
    public static Stream<Double> crateStreamByGenerate(){
        return Stream.generate(Math::random).limit(10);
    }
7、自定义Supplier,创建Stream

范例:

    /**
     * 自定义Supplier,创建Stream
     * @return
     */
    public static Stream<Obj> createStreamByDefine(){
        return Stream.generate(new ObjSupplier()).limit(10);
    }



    static class ObjSupplier implements Supplier<Obj> {

        int index =0;
        Random random = new Random(System.currentTimeMillis());
        @Override
        public Obj get() {
            index = random.nextInt(100);
            return new Obj(index, "Name->"+index);
        }
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    static class Obj{
        private Integer id;
        private String name;
    }

熟悉创建Stream后,就是使用其api进行开发了。

2

评论 (0)

取消