原创 Stream入门(2)----创建Strean

1 通过collections进行创建

    List<String> list = Arrays.asList("hello", "alex", "wangwenjun", "world", "stream");
    list.stream().forEach(System.out::print);

2 通过values进行创建

        Stream.of("hello", "alex", "wangwenjun", "world", "stream").forEach(System.out::println);

3 通过arrays进行创建

        String[] strings = {"hello", "alex", "wangwenjun", "world", "stream"};
        Arrays.stream(strings).forEach(System.out::println);

4 通过files进行创建

	Path path = Paths.get("D:\\CompletableFutureInAction1.java");
	try (Stream<String> streamFromFile = Files.lines(path)) {
   	 	streamFromFile.forEach(System.out::println);
	} catch (IOException e) {
    	throw new RuntimeException(e);
	}

5 通过iterate创建

 Stream<Integer> stream = Stream.iterate(0, n -> n + 2).limit(10);
 tream.forEach(System.out::println);
 

:输出结果为

0
2
4
6
8
10
12
14
16
18

6 通过generate创建

Stream.generate(Math::random).limit(10).forEach(System.out::println);

其中我们可以使用如下代码,进行生成自己所需要的一些对象Stream

    private static Stream<Obj> createObjStreamFromGenerate() {
        return Stream.generate(new ObjSupplier()).limit(10);
    }

    static class ObjSupplier implements Supplier<Obj> {

        private int index = 0;

        private Random random = new Random(System.currentTimeMillis());

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

    static class Obj {
        private int id;
        private String name;

        public Obj(int id, String name) {
            this.id = id;
            this.name = name;
        }

        public int getId() {
            return id;
        }

        public String getName() {
            return name;
        }

        @Override
        public String toString() {
            return "Obj{" +
                    "name='" + name + '\'' +
                    ", id=" + id +
                    '}';
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 如果您想使用Stream API去除重复元素,您可以使用distinct()方法。 以下是一个简单的代码示例: ``` import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3, 4, 5); List<Integer> distinctNumbers = numbers.stream() .distinct() .collect(Collectors.toList()); System.out.println("去重后的数字:" + distinctNumbers); } } ``` 运行结果: ``` 去重后的数字:[1, 2, 3, 4, 5] ``` 希望这个示例能帮助您了解如何使用distinct()方法去重。 ### 回答2: 在使用Stream去重时,可以通过以下步骤实现: 1. 首先,将需要去重的数据转换为一个Stream。这可以通过Stream的工厂方法实现,比如通过集合的stream()方法或者使用Stream.of()或Arrays.stream()方法创建一个流。 2. 接下来,使用Stream的distinct()方法对流中的元素进行去重。distinct()方法将返回去重后的新流,其中只包含不重复的元素。可以通过链式调用的方式将distinct()方法与其他流操作方法组合在一起。 3. 最后,可以将去重后的流转换回具体的集合或者获取这些元素。可以使用collect()方法将流转为一个集合,比如使用Collectors.toList()方法获取去重后的元素列表,或者使用其他的Collectors方法将元素收集到Set、数组等数据结构中。 需要注意的是,Stream的去重是基于元素的equals()方法进行判断的。因此,如果我们需要去重的元素是自定义的类对象,需要重写equals()方法和hashCode()方法,以确保正确的去重结果。 总的来说,使用Stream去重可以通过创建流、调用distinct()方法对流中的元素进行去重,然后将去重后的流转换为具体的集合或者获取其中的元素。这样就可以方便地实现对一组数据的去重操作。 ### 回答3: 在使用Stream去重的过程中,我们可以利用Stream流提供的一些方法来实现。 首先,我们可以使用distinct()方法去除重复元素。该方法会根据元素的equals()方法判断是否为重复元素,并返回一个去重后的Stream流。 其次,我们可以使用collect()方法结合Collectors类的toSet()方法。toSet()方法会返回一个去重后的Set集合,然后通过collect()方法将这个Set集合转化为Stream流。 此外,我们还可以使用HashSet来实现流的去重。可以使用HashSet的add()方法,将元素添加到HashSet中,由于HashSet不允许重复元素的存在,重复元素会被自动去除。 最后,我们可以利用Stream流的reduce()方法来去重。reduce()方法接受两个参数,第一个参数表示初始值,第二个参数是一个BinaryOperator函数接口,用于将元素添加到结果中。在这个函数接口中,我们可以使用Set集合来存储结果,从而自动去除重复元素。 总而言之,在使用Stream去重时,我们可以使用Stream流提供的distinct()方法、collect()方法结合toSet()方法、HashSet以及reduce()方法来实现去重功能。根据具体的需求和场景选择合适的方法,可以提高代码的简洁性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵湖映北辰

年轻人,要讲武德!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值