草庐IT

null-stream

全部标签

java - 跳过 Stream<T> 中的最后 x 个元素

如果我有一个Stream,我可以很容易地使用skip(long)跳过流的前几个元素。但是,在流的末尾跳过给定数量的元素似乎没有等效方法。最明显的解决方案是使用limit(originalLength-elementsToRemoveAtEnd),但这需要事先知道初始长度,但情况并非总是如此。有没有办法删除未知长度流的最后几个元素,而不必将其收集到Collection中?,计算元素并再次流式传输? 最佳答案 对于长度可能未知的Stream,没有通用的免存储解决方案。但是,您不需要收集整个流,您只需要与要跳过的元素数量一样大的存储空间:

java - LINQ Join 的 Java 8 Stream API 等效项是什么?

在C#/.Net中,可以使用扩展方法Enumerable.Join以SQL“JOIN...ON”方式连接IEnumerable序列。Java8(StreamAPI)中有类似的东西吗?或者模拟Enumerable.Join的最佳方法是什么?参见:https://msdn.microsoft.com/en-us/library/bb534675%28v=vs.100%29.aspx 最佳答案 joinisjustsyntacticsugarforStream.flatMap()asexplainedinthisarticle.考虑这个例

如果列表为空,Java lambda 返回 null,否则返回值的总和?

如果我想汇总一个账户的当前余额列表,我可以这样做:accountOverview.setCurrentBalance(account.stream().filter(a->a.getCurrentBalance()!=null).mapToLong(a->a.getCurrentBalance()).sum());但是这个表达式将返回0,即使所有余额都为空。如果所有余额都为空,我希望它返回null,如果有非空0余额,则返回0,否则返回余额之和。如何使用lambda表达式执行此操作?非常感谢 最佳答案 一旦从流中过滤掉它们,就无法知道

Java 8 Streams - 对元组流进行分组

编辑::我正在改写问题以便更清楚这段代码是我写的List>list=newArrayList>();list.add(newImmutablePair(1,1));list.add(newImmutablePair(1,1));list.add(newImmutablePair(1,1));list.add(newImmutablePair(2,2));list.add(newImmutablePair(2,2));list.add(newImmutablePair(2,2));list.add(newImmutablePair(3,3));list.add(newImmutableP

java - 使用可选处理 java 流中的 null

如果我们有如下的senario,那么处理null的最佳方式是什么//mockingfordemonstratonstudentsByCourseRoster.setUsers(null);studentsByCourseRoster.getUsers().stream().forEach(user->{finalUserDTOv2userDTO=newUserDTOv2();userDTO.populateUserDataFromUserDTO(user,groupedUsers);users.add(userDTO);}); 最佳答案

java.util.stream.Collectors : Why is the summingInt implemented with an array?

标准收集器summingInt在内部创建一个长度为1的数组:publicstaticCollectorsummingInt(ToIntFunctionmapper){returnnewCollectorImpl(()->newint[1],(a,t)->{a[0]+=mapper.applyAsInt(t);},(a,b)->{a[0]+=b[0];returna;},a->a[0],CH_NOID);}我想知道是否可以只定义:privateCollectorsummingInt(ToIntFunctionmapper){returnCollector.of(()->0,(a,t)->

java - FlyingSaucer renderer.setDocument 抛出 "Stream closed"异常

我在使用找到的简单示例创建PDF时遇到问题here.这是我第一次尝试使用它,我尝试了一些东西并进行了大量搜索,但没有找到产生错误的原因。错误源自renderer.setDocument(url);行。如果有人有任何想法、建议或替代方案,我们将不胜感激。packageflyingsaucerpdf;importjava.io.*;importcom.lowagie.text.DocumentException;importorg.xhtmlrenderer.pdf.ITextRenderer;publicclassFirstDoc{publicstaticvoidmain(String[

java - @JsonInclude(Include.NON_NULL) 不工作/ jackson 序列化空值

我已经在类/pojo上放置了注释并配置了映射器,但它仍然序列化null值我正在使用Hibernate4.3.7Final和Jackson2.4.4。这些集合是延迟加载Pojo:删除了getter和setter@JsonInclude(Include.NON_NULL)@Entity@TablepublicclassSchool{@Id@GeneratedValueprivateintid;@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)privateListstudents;@OneToMany(cascade=Casca

java - 如何使用java Stream检查集合是否为空

我是Java8的新手。我无法理解以下代码中的错误。思路是发Collection如果它不是空的。但是如果集合是空的而不是发送HttpStatus.NOT_FOUND实体响应。@RequestMapping(value="/find/pks",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)publicResponseEntity>getUsers(@RequestBodyfinalCollectionpks){returnStreamSupport.stream(userRepository.findA

java - 从 'stream()' 或 'parallelStream()' 中捕获异常会丢失正确的值

在下面的代码中,当从for迭代中捕获NumberFormatException时,适当形式的字符串出现在strList中第一个坏字符串之前(即"illegal_3")已成功解析(即"1"和"2"已解析为整数1和2)。publicvoidtestCaughtRuntimeExceptionOutOfIteration(){ListstrList=Stream.of("1","2","illegal_3","4","illegal_5","6").collect(Collectors.toList());ListintList=newArrayList();try{for(Stringst