草庐IT

java - 在 Intellij IDEA 中将 Java 8 流降级为 Java 7 循环

我有一些使用Java8功能编写的代码,这意味着流和lambda。现在,我必须在使用Java7的项目中重用此类代码。是否可以使用IntelliJ自动重构代码?例如,我必须将一些如下所示的代码重构为简单的for/while循环。Arrays.stream(values).distinct().limit(2).count(); 最佳答案 是的,IntelliJ有“用循环替换StreamAPI链”重构选项。将光标放在Arrays.stream()方法上后按Alt+Enter弹出:它将产生如下代码:longcount=0L;longlimi

java - 流接口(interface) : How empty() method returns Iterable?

@FunctionalInterfacepublicinterfaceStreamableextendsIterable,Supplier>我正在探索StreamableInterface,我遇到的第一个方法是empty()具有以下定义的方法。staticStreamableempty(){returnCollections::emptyIterator;}Collections::emptyIterator返回Iterator但是这个方法的返回类型是Streamable.Streamble扩展了Iterable和Supplier而不是Iterator接口(interface)。我不明

java - 如何在 QtJambi 中获取标准输入、标准输出、标准错误文本流的 QIODevice 实例?

我想获取代表标准IO流(stdin、stdout、stderr)的QIODeviceQtJambi,这样我就可以在可以读取或写入新行时得到通知。 最佳答案 好吧,如果你只想为那些实现QIODevice,你可以使用类似的东西QFilestdin=newQFile();stdin.open(0,newQIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly));QFilestdout=newQFile();stdout.open(1,newQIODevice.OpenMode(QIODevic

java - flatMap() 将 LinkedList<String> 流转换为 String 流

我的目标正是标题所说的。我正在做的是:.stream().flatMap(x->x.getTitles())getTitles()返回LinkedList,我预计flatMap()完成这项工作并创建字符串流而不是LinkedList流,但是Eclipse说:Typemismatch:cannotconvertfromLinkedListtoStream我该怎么做?(我需要用流来做,这都是更大的流计算的一部分) 最佳答案 flatMap期望映射到流,而不是集合。使用.stream().flatMap(x->x.getTitles().

java - 我如何延迟连接流?

我正在尝试实现一个在其实现中使用自身的另一个实例的流。该流有几个常量元素(使用IntStream.concat)添加到它前面,因此只要串联流懒惰地创建非常量部分,这就应该有效。我认为使用StreamSupport.intStreamoverloadtakingaSupplierwithIntStream.concat("createsalazilyconcatenatedstream")应该足够懒惰,只在需要元素时才创建第二个拆分器,但即使创建流(不评估它)也会溢出堆栈。我如何延迟连接流?我正在尝试从thisanswer移植流式素数筛选器进入java。此筛子使用自身的另一个实例(Pyt

java - 使用流 api 对对象列表中的多个不同字段求和?

在Java8中,如果我有这样一个对象列表:MyObjectdoublea;doubleb;doublec;我想获取对象列表中每个字段的总计。我可以做到的一种方法如下:doubletotalA=myListOfObjects.stream().map(e->e.getA()).reduce(0.0,(x,y)->x+y);doubletotalB=myListOfObjects.stream().map(e->e.getB()).reduce(0.0,(x,y)->x+y);doubletotalC=myListOfObjects.stream().map(e->e.getC()).re

java - 从客户端干净地关闭 GRPC-Java 中的所有打开流

我正在使用GRPC-Java1.1.2。在Activity的GRPCsession中,我打开了一些双向流。当客户端断开连接时,有没有办法从客户端清除它们?当我尝试断开连接时,我运行以下查找固定次数,然后断开连接,但我可以在服务器端看到以下错误(但不确定是否由其他问题引起):断开与客户端的连接while(!channel.awaitTermination(3,TimeUnit.SECONDS)){//checkforupperboundandbreakifso}channel.shutdown().awaitTermination(3,TimeUnit.SECONDS);服务器错误E04

java - 我怎么知道哪个文件流支持在 Java 中查找

java.io.InputStream.skip()说“抛出:IOException-如果流不支持查找,或者发生其他一些I/O错误。”我怎么知道哪个文件流支持搜索?当我在google上找到Seekable时,但我可以看到简单的FileInputStream、ByteArrayInputStream...也支持skip(),我的意思是不给出IOException;它们不扩展Seekable。 最佳答案 唯一可以确定的方法是阅读您感兴趣的任何特定流的javadoc。那里的继承层次结构很糟糕,但它是一个旧类。编辑:我刚刚阅读了javado

Java 流 : Organize a collection into a map and select smallest key

我很确定这在一行中是不可能的,但我只是想检查一下:ListselectedItems=null;Map>itemsByStockAvailable=WidgetItems.stream().collect(Collectors.groupingBy(WidgetItem::getAvailableStock));selectedItems=itemsByStockAvailable.get(itemsByStockAvailable.keySet().stream().sorted().findFirst().get());基本上,我将所有小部件项目收集到一个映射中,其中键是avail

Java 8 流 : get non repeated counts

这是输入和输出的SQL版本:withtab1as(select1asidfromdualunionallselect1asidfromdualunionallselect2asidfromdualunionallselect2asidfromdualunionallselect5asidfromdual)selectidfromtab1groupbyidhavingcount(id)=1;OutputisId=5andcountis1因为5是非重复的。我如何使用JAVA8流实现它?我在下面尝试过,但显然它给出了错误的结果ListmyList=newArrayList();myList.