为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Java Streams一次性出现?

为什么Java Streams一次性出现?

qq_笑_17 2019-12-02 16:04:34
与C#不同IEnumerable,在C#中,执行管道可以执行任意多次,而在Java中,流只能“迭代”一次。对终端操作的任何调用都会关闭流,使其无法使用。这种“功能”带走了很多力量。我想这不是技术原因。这种奇怪的限制背后的设计考虑是什么?编辑:为了演示我在说什么,请考虑以下C#中的Quick-Sort实现:IEnumerable<int> QuickSort(IEnumerable<int> ints){  if (!ints.Any()) {    return Enumerable.Empty<int>();  }  int pivot = ints.First();  IEnumerable<int> lt = ints.Where(i => i < pivot);  IEnumerable<int> gt = ints.Where(i => i > pivot);  return QuickSort(lt).Concat(new int[] { pivot }).Concat(QuickSort(gt));}现在确定,我不主张这是快速排序的良好实现!但是,这是将lambda表达与流操作相结合的表达能力的一个很好的例子。而且它不能用Java完成!我什至不能问一个流是否为空而不使它无法使用。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信