草庐IT

stream_transform

全部标签

Java 8 等同于 Streams 的 getLineNumber()

对于Java8中的Streams,是否有等同于getLineNumber()的方法?我想在文本文件中搜索一个词并将行号作为整数返回。这是我的搜索方法:result=Files.lines(Paths.get(fileName)).filter(w->w.contains(word)).collect(Collectors.toList()); 最佳答案 我认为没有,因为流的设计目的不是提供对其元素的访问,这与集合不同。一种解决方法是读取列表中的文件,然后使用IntStream生成相应的索引,然后您可以从中应用过滤器:Listlist

java - Stream.count() 是否保证访问每个元素?

换句话说,下一行是否保证打印num行?intnum=list.stream().peek(System.out::println).count();这个问题是由https://stackoverflow.com/a/41346586/2513200的评论中的讨论引发的我依稀记得有一次讨论说避免迭代的优化可能是合法的,但在快速搜索期间没有找到任何结论。JavaDocsforStream.count包含此语句:Thisisaspecialcaseofareductionandisequivalentto:returnmapToLong(e->1L).sum();但我不确定如果流可以以某种方

Java 8 stream.collect( ... groupingBy ( ... mapping( ... reducing ))) 减少 BinaryOperator 的使用

我尝试了一个使用groupingBy、mapping和reducing的解决方案以下问题:Elegantlycreatemapwithobjectfieldsaskey/valuefromobjectstreaminJava8.总结一下目标是得到一个以年龄为key,以一个人的爱好为Set的map。我想出的解决方案之一(不是很好,但这不是重点)有一个奇怪的行为。使用以下列表作为输入:ListpersonList=Arrays.asList(newPerson(/*name*/"A",/*age*/23,/*hobbies*/asList("a")),newPerson("BC",24,a

java - Stream.reduce(BinaryOperator<T> accumulator) 如何初始化?

以下代码无需初始化reduce操作即可完美运行。intsum=Stream.of(2,3).reduce((Integera,Integerb)->a+b).get();//sum=5intsum=Stream.of(2,3).reduce((Integera,Integerb)->a*b).get();//sum=6它如何知道第一个累加器是+以便它应该初始化为一个新的sum=0,而第二个累加器是*以便它应该初始化为一个新的sum=1吗? 最佳答案 1参数reduce不以标识值(0或1)开头。它仅对流中的值进行操作。如果您查看jav

java - 使用 Stream 而不是 for 循环创建增量 int 数组

我想创建一个构建递增数字数组的函数。例如,我想获取如下内容:int[]array=newint[]{1,2,3,4,5,6,7,8,...,1000000};该函数会接收两个参数:起始编号(含)和数组的最终长度:publicint[]buildIncrementalArray(intstart,intlength){...}我知道如何使用for循环来做到这一点:publicint[]buildIncrementalArray(intstart,intlength){int[]result=newint[length];for(inti=0;i我不想使用for循环,而是想使用Java8S

java - 如何从 Java 8 Streams 中的 forEach 循环获取列表输出

我有两个不同的相同对象列表,但属性不同,并且在这些对象中具有公共(public)标识符。我想遍历第一个列表并从第二个列表(具有公共(public)属性)中获取相应的对象,然后将这些对象包装起来,最后使用JavaStreams将该对象添加到列表中。这是我举的例子。privateclassPerson{privateStringname;privatebooleanisSenior;privatePerson(Stringname,booleanisSenior){this.name=name;this.isSenior=isSenior;}publicStringgetName(){re

JAVA stream应用

JAVAstream应用一、根据某个参数查询List中匹配的数据(单个对象)orElse(null):如果没有找到,则将结果置为null1.单个条件Useruser=list.stream() .filter(m->"123".equals(m.getName())) .findAny() .orElse(null);2.多个条件Useruser=list.stream() .filter(m->"123".equals(m.getName())) .filter(m->"1".equals(m.getType())) .findAny() .orElse(null);二、根据某

【Transformer系列(1)】encoder(编码器)和decoder(解码器)

前言这个专栏我们开始学习transformer,自推出以来transformer在深度学习中占有重要地位,不仅在NLP领域,在CV领域中也被广泛应用,尤其是2021年,transformer在CV领域可谓大杀四方。在论文的学习之前,我们先来介绍一些专业术语。本篇就让我们先来认识一下encoder和decoder吧!​  🍀本人Transformer相关文章导航: 【Transformer系列(1)】encoder(编码器)和decoder(解码器) 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 【Transformer系

java - 改变 Stream 中的元素

在Stream中改变元素是否有“最佳实践”?我特别指的是流管道内的元素,而不是流管道外的元素。例如,考虑我想要获取用户列表的情况,为null属性设置默认值并将其打印到控制台。假设用户类:classUser{Stringname;staticUsernext(inti){Useru=newUser();if(i%3!=0){u.name="user"+i;}returnu;}}在Java7中,它类似于:for(inti=0;i在java8中,我似乎会使用.map()并返回对变异对象的引用:IntStream.range(0,7).mapToObj(User::next).map(user

java - 使用新的 Java 8 Streams API 解析 CSV 文件以获取唯一行

我正在尝试使用新的Java8StreamsAPI(我完全是新手)来解析CSV文件中的特定行(名称列中带有“Neda”的行)。使用以下article出于动机,我修改并修复了一些错误,以便我可以解析包含3列的文件-“姓名”、“年龄”和“高度”。name,age,heightMarianne,12,61Julie,13,73Neda,14,66Julia,15,62Maryam,18,70解析代码如下:@Overridepublicvoidinit()throwsException{Mapparams=getParameters().getNamed();if(params.contains