本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
提问:如何将Java 8 的 IntStream转换为列表? 我正在查看文档,在IntStream类中看到了一种toArray方法,但是无法直接转到List<Integer>
是否有一种方法可以将a转换Stream为a List?
回答1:
IntStream::boxed
IntStream::boxed将IntStream变成Stream<Integer>,然后可以将其collect变成List
theIntStream.boxed().collect(Collectors.toList())
Java 16及更高版本
Java 16带来了更短的toList方法。产生一个不可修改的列表。
theIntStream.boxed().toList()
提问:适用于Java的最佳XML解析器
我需要阅读较小的XML文件(最多只有几MB,UTF-8编码),查询各种元素和属性,也许要修改一些并将XML重新写回磁盘(最好采用缩进格式) 。
回答1:
我认为您不应该考虑任何特定的解析器实现。用于XML处理的Java API使您能够以标准方式使用任何符合条件的解析器实现。该代码应该具有更大的可移植性,并且当您意识到某个特定的解析器太旧时,可以在不更改代码行的情况下(如果正确执行)将其替换为另一个解析器。
基本上,有三种以标准方式处理XML的方式:
- SAX这是最简单的API。通过定义一个Handler类来读取XML,该Handler类在以串行方式处理XML时会在元素/属性中接收数据。如果您仅打算读取一些属性/元素和/或写回一些值(您的情况),则它会更快,更简单。
- DOM此方法创建一个对象树,可让您随机修改/访问它,因此更适合复杂的XML操作和处理。
- StAX这位于SAX和DOM之间的路径中间。您只需编写代码即可在处理数据时从感兴趣的解析器中提取数据。