草庐IT

wrap-duplex-stream

全部标签

java - 如何使用 Java 8 Stream 扩展和重组列表列表?

我有一个A类列表,其中包括一个列表本身。publicclassA{publicdoubleval;publicStringid;publicListnames=newArrayList();publicA(doublev,StringID,Stringname){val=v;id=ID;names.add(name);}staticpublicListcreateAnExample(){Listitems=newArrayList();items.add(newA(8.0,"x1","y11"));items.add(newA(12.0,"x2","y21"));items.add(n

java - 如何将这个经典的 Java 代码重写为 Java Stream API 代码?

有一段旧的Java代码(没有lambda表达式):publicListgetAttackedCheckersForPoint(CheckerPositionfrom,booleanisSecondPlayerOwner,booleanisQueen,VectorDirectionignoredDirection){ListallDirections=VectorDirection.generateAllDirections();Listresult=newArrayList();for(VectorDirectiondirection:allDirections){if(!direct

java - 仅使用两个键和奇数或偶数列表索引作为值将 List 转换为 Map - Java 8 Stream

我想将列表转换为map,只使用两个字符串值作为键值。然后作为值只是包含来自输​​入列表的奇数或偶数索引位置的元素的字符串列表。这是旧时尚代码:Map>map=newHashMap();Listlist=Arrays.asList("one","two","three","four");map.put("evenIndex",newArrayList());map.put("oddIndex",newArrayList());for(inti=0;i如何使用流将此代码转换为Java8以获得此结果?{evenIndex=[one,three],oddIndex=[two,four]}我目前

Java SWT : Wrap main loop in exception handler?

您可能知道,标准的SWT主循环如下所示:Displaydisplay=newDisplay();Shellshell=newShell(display);...shell.open();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}display.dispose();最近,我与一位同事争论将主循环包装在try-catch中是否有意义,如下所示:Displaydisplay=newDisplay();Shellshell=newShell(display);...shell.open

java - 使用 Spring Cloud Stream 将 RabbitMQ 消费者绑定(bind)到现有队列

我使用RabbitMQ网络用户界面创建了一个主题交换TX并绑定(bind)到交换两个队列TX.Q1和TX.Q2,每个都与路由键rk1和rk2相应地绑定(bind),并向交换生成少量消息。现在我想使用SpringCloudStream创建一个消费者,它只会从Q1获取消息。我尝试使用配置:spring.cloud.stream.bindings.input.destination=TXspring.cloud.stream.bindings.input.group=Q1以及消费消息的方法的注解@StreamListner(Sink.INPUT)。结果我可以看到消费者创建了一个同名队列(或绑

java - 为什么不推荐基于 AtomicInteger 的 Stream 解决方案?

假设我有这份水果list:-Listf=Arrays.asList("Banana","Apple","Grape","Orange","Kiwi");我需要为每个水果添加一个序列号并打印出来。水果或序列号的顺序无关紧要。所以这是一个有效的输出:-4.Kiwi3.Orange1.Grape2.Apple5.Banana解决方案#1AtomicIntegernumber=newAtomicInteger(0);Stringresult=f.parallelStream().map(i->String.format("%d.%s",number.incrementAndGet(),i)).

java - 使用 Java Stream API 对数组进行部分降序排序

我需要知道如何使用StreamAPI按降序对原始唯一整数数组进行部分排序。比如有{1,2,3,4,5}这样的数组,我想得到{5,4,3,1,2}-首先是3个最大的元素,然后是其余的。甚至可以使用流吗?我检查了文档-有两种方法skip和limit但它们会更改流内容并从数组的开头开始工作。我可以像这样对整个数组进行排序Arrays.stream(arr).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();但是如何使这个排序部分化呢?我说StreamAPI是因为我希望它写得很好。而

java - 如何根据 Java 8 Stream 过滤器的输出计算百分比

我想获取一个作业列表(称为resultStream)并计算完全完成的作业的百分比。publicclassJob{privateDatedate;privateStringsuccess;//Getterandsetterandconstructor.}列表包含以下内容:newJob("TODAY","YES");newJob("TODAY","YES");newJob("YESTERDAY","YES");newJob("TODAY","NO");这是我目前的代码:resultStream.stream().parallel().filter(result->{if("YES".con

Java 8 : First use of stream() or parallelStream() very slow - Usage in practice meaningful?

在过去的几天里,我用Java8中的外部迭代、流和并行流进行了一些测试,并测量了执行时间的持续时间。我还阅读了我必须考虑的预热时间。但是还有一个问题。当我第一次对集合调用方法stream()或parallelStream()时,执行时间比外部迭代长。我已经知道,当我在同一集合上更频繁地调用stream()或parallelStream()并计算执行时间时,parallelStream()确实比外部迭代更快。但是由于在实践中一个集合通常也只迭代一次,所以我只看到使用流或并行流的缺点。所以我的问题是:如果我只迭代一次集合,使用流或parallelStream()是个好主意,还是执行时间总是比

Java8 Stream - 来自 IntStream 的字节 HashSet

我正在尝试创建一个HashSet的bytes1,2,3,...9使用Java8StreamsAPI。我想用IntStream然后将值降级为byte会做的。我正在尝试的变体HashSetnums=IntStream.range(1,10).collect(Collectors.toSet());HashSetnums=IntStream.range(1,10).map(e->((byte)e)).collect(Collectors.toSet());但这些都不起作用。Error:(34,73)java:methodcollectininterfacejava.util.stream.I