草庐IT

Stream流

全部标签

具有批处理功能的 Java 8 Stream

我有一个包含项目列表的大文件。我想创建一批项目,用这批项目发出一个HTTP请求(所有项目都需要作为HTTP请求中的参数)。我可以使用for循环非常轻松地做到这一点,但作为Java8爱好者,我想尝试使用Java8的Stream框架编写它(并获得延迟处理的好处)。例子:Listbatch=newArrayList(BATCH_SIZE);for(inti=0;i0)process(batch);我想做一些很长的事情lazyFileStream.group(500).map(processBatch).collect(toList())最好的方法是什么? 最佳答案

java - 在单行中获取 Stream/List 的最后一个元素

如何在以下代码中获取流或列表的最后一个元素?在哪里data.careas是List:CAreafirst=data.careas.stream().filter(c->c.bbox.orientationHorizontal).findFirst().get();CArealast=data.careas.stream().filter(c->c.bbox.orientationHorizontal).collect(Collectors.toList()).;//howto?如您所见,获取第一个元素,带有一定的filter,并不难。但是,在单行中获取最后一个元素确实很痛苦:我似乎无法

java - 复制一个流以避免 "stream has already been operated upon or closed"

我想复制一个Java8流,以便可以处理两次。我可以将collect作为一个列表并从中获取新的流;//doSomething()returnsastreamListthing=doSomething().collect(toList());thing.stream()...//dostuffthing.stream()...//dootherstuff但我觉得应该有更高效/优雅的方式。有没有办法复制流而不将其转换为集合?我实际上正在处理Either流,因此希望先以一种方式处理左侧投影,然后再以另一种方式处理右侧投影。有点像这样(到目前为止,我被迫使用toList技巧)。List,A>>r

java - 如何使用 Java 8 Stream 从某些类属性中获取列表?

我有一个List.我需要获得List来自Person的属性(property).例如,我有一个Person类:classPerson{privateStringname;privateStringbirthDate;publicStringgetName(){returnname;}publicStringgetBirthDate(){returnbirthDate;}Person(Stringname){this.name=name;}}ListpersonList=newArrayList();personList.add(newPerson("David"));personLis

java - 如何使用 lambda 表达式调试 stream().map(...)?

在我们的项目中,我们正在迁移到java8,并且正在测试它的新功能。在我的项目中,我使用Guava谓词和函数来过滤和转换使用Collections2.transform和Collections2.filter的一些集合。在此迁移中,我需要将例如Guava代码更改为java8更改。所以,我正在做的改变是这样的:Listnaturals=Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13);Functionduplicate=newFunction(){@OverridepublicIntegerapply(Integern){returnn*2

java - 将 Java 8 的 Optional 与 Stream::flatMap 一起使用

新的Java8流框架和friend们编写了一些非常简洁的Java代码,但我遇到了一个看似简单但很难简洁地做到的情况。考虑一个Listthings和方法Optionalresolve(Thingthing)。我想将Thing映射到Optional并获取第一个Other。显而易见的解决方案是使用things.stream().flatMap(this::resolve).findFirst(),但flatMap要求您返回一个流,并且Optional没有stream()方法(或者它是Collection或提供将其转换为或查看为Collection的方法)。我能想到的最好的是:things.s

php - file_put_contents(meta/services.json) : failed to open stream: Permission denied

我是Laravel的新手。我试图打开http://localhost/test/public/我得到了Errorinexceptionhandler.我用谷歌搜索并使用chmod-R777app/storage更改了存储目录的权限,但无济于事。我在app.php中更改了debug=>true并访问该页面并在异常处理程序中得到错误:Thestreamorfile"/var/www/html/test/app/storage/logs/laravel.log"couldnotbeopened:failedtoopenstream:Permissiondeniedin/var/www/htm

java - 为什么 Iterable<T> 不提供 stream() 和 parallelStream() 方法?

我想知道为什么Iterable接口(interface)不提供stream()和parallelStream()方法。考虑以下类:publicclassHandimplementsIterable{privatefinalListlist=newArrayList();privatefinalintcapacity;//...@OverridepublicIteratoriterator(){returnlist.iterator();}}它是Hand的一种实现,因为您可以在玩集换式卡牌游戏时手中有牌。基本上它包装了List,确保最大容量并提供一些其他有用的功能。最好直接将其实现为Li

java - 为什么 Stream<T> 没有实现 Iterable<T>?

在Java8中,我们有类Stream,奇怪的是有一个方法Iteratoriterator()所以你会期望它实现接口(interface)Iterable,这正是需要这种方法,但事实并非如此。当我想使用foreach循环遍历Stream时,我必须执行类似的操作publicstaticIterablegetIterable(Streams){returnnewIterable{@OverridepublicIteratoriterator(){returns.iterator();}};}for(Telement:getIterable(s)){...}我错过了什么吗?

java - Collection.stream().forEach() 和 Collection.forEach() 有什么区别?

我知道通过.stream(),我可以使用.filter()之类的链式操作或使用并行流。但是如果我需要执行小操作(例如,打印列表的元素),它们之间有什么区别?collection.stream().forEach(System.out::println);collection.forEach(System.out::println); 最佳答案 对于如图所示的简单情况,它们大多相同。但是,存在许多可能很重要的细微差别。一个问题是订购。使用Stream.forEach,顺序是undefined。顺序流不太可能发生这种情况,但它仍然在St