草庐IT

stream_readable

全部标签

java - 使用 Stream 还是 Loop 之间的决定

通过用Java编写应用程序,java.util.Collection有很多用例。由于java.util.stream.Stream是在Java8中引入的,我遇到了一些难以决定使用什么的用例。例如:您将编写一些实用方法。publicstaticListfilterHashToList(inthash,CollectiontoFilter){returntoFilter.stream().filter((Objecto)->hash==o.hashCode()).collect(Collectors.toCollection(LinkedList::new));}这样写怎么样:public

java - 为什么 ConsoleAppender 抛出 "no output stream or file set for the appender named [null]"?

我在使用log4jConsoleAppender时遇到问题:如果我这样初始化它:ConsoleAppenderca=newConsoleAppender();ca.setLayout(newPatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));它给出错误并中断日志记录。错误输出:log4j:ERRORNooutputstreamorfilesetfortheappendernamed[null].如果我这样初始化它,它工作正常:ConsoleAppenderca=newConsoleAppender(newPatternLayout

java - 为什么我使用 Apache Commons FileUpload 得到 "FileUploadException: Stream ended unexpectedly"?

遇到这个Exception是什么原因:org.apache.commons.fileupload.FileUploadException:Processingofmultipart/form-datarequestfailed.Streamendedunexpectedly 最佳答案 主要原因是底层套接字被关闭或重置。最常见的原因是用户在文件完全上传之前关闭了浏览器。或者上传过程中网络中断。无论如何,服务器端代码应该能够优雅地处理这个异常。 关于java-为什么我使用ApacheComm

Java 8 流 : Collapse/abstract streams parts

假设我有这个流:list.stream().map(fn1)//part1.map(fn2)//.filter(fn3)//.flatMap(fn4)//part2.map(fn5)//.filter(fn6)//.map(fn7)//.collect(Collectors.toList())我怎样才能让它看起来像:list.stream().map(fnPart1).map(fnPart2).collect(Collectors.toList())无需手动展开fnX部件并将它们放在一起(出于维护原因,我想保持它们不变,并用它们表达fnPartX)。 最佳答

Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

假设我有一个Listints=newArrayList();我想为其添加值并使用forEach()比较并行执行的结果和Collectors.toList().首先,我向这个列表中添加一些来自顺序IntStream和forEach的值:IntStream.range(0,10).boxed().forEach(ints::add);我得到了正确的结果:ints==>[0,1,2,3,4,5,6,7,8,9]现在我.clear()列表并并行做同样的事情:IntStream.range(0,10).parallel().boxed().forEach(ints::add);现在由于多线程我得

java - 如何使用 Stream API java 8 一起打印两个列表?

我有两个列表如下Listnames=Arrays.asList("James","John","Fred");Listages=Arrays.asList(25,35,15);我想做的是像这样打印这两个列表James:25John:35Fred:15用经典的方式很容易做到for(inti=0;i有没有办法使用StreamAPIjava8来做到这一点?我能做的就是只打印一个列表names.stream().forEach(System.out::println); 最佳答案 最简单的方法是创建一个IntStream来生成索引,然后将每

java - 重复 Stream allMatch() 直到 true

inttestValue;booleansuccess=false;while(success==false){testValue=generateRandomInt();success=mySystem.getHosts().parallelStream().allMatch(predicate(testValue));}returntestValue;我正在玩java8流。您有什么建议可以使上面的代码更优雅/更易读? 最佳答案 您可以使用无限的IntStream代替while循环,并返回与您的条件匹配的流的第一个int:retu

java - java.util.stream.Stream<T>.sorted() 的大 O 复杂度

有谁知道java.util.stream.Stream.sorted()的时间复杂度是多少?是吗? 最佳答案 好吧,sorted()本身是O(1),因为它是一个不消耗流的中间操作,而只是向管道添加一个操作。一旦终端操作使用了流,排序就会发生,或者它什么都不做(O(1)),因为流知道元素已经排序(例如,因为它们来自SortedSet)或者流不是并行的,它委托(delegate)给Arrays.sort()(O(nlogn))或者流是并行的,它委托(delegate)给Arrays.parallelSort()(O(nlogn))

Java 8 流 : replace single item in streamed collection

我对使用Java8有点陌生,并且正在使用流操作(这似乎是一个很好的用例)重构一些旧代码。旧代码“有效”,但在我看来它看起来效率很低。我的问题的简短版本是我试图找到List的单个元素并将其替换为同一元素的更新版本(键是相同的,但属性每次代码都有不同的值被称为)。try{Listitems=lookup(itemCache.getKey());for(inti=0;inewItems=newArrayList(items);newItems.set(i,newObject);putIntoCache(newObject.getKey(),newItems);break;}}}catch(E

java - 使用 Java Streams 优化机会

我正在查看一些代码并遇到这种方法,它采用HTMLheader值(即Content-Disposition=inline;filename=foo.bar)并将其解析为由分号分隔为key=value的映射对。起初它看起来像是使用流进行优化的一个很好的候选者,但在我实现它之后,我不能重用计算的String.indexOf('=')值这一事实意味着必须扫描字符串3次,这是实际上不如原来的优化。我非常清楚,在很多情况下,Streams并不是完成这项工作的正确工具,但我想知道我是否错过了一些可以让Stream比初始代码具有更高性能/更高性能的技术。/***ConvertaHeaderValueS