/images/avatar.png

XPath教程

XPath是什么?

  • XPath代表XML路径语言
  • XPath使用“类似路径”的语法来标识和导航XML文档中的节点
  • XPath包含200多个内置函数
  • XPath是XSLT标准中的一个主要元素
  • XPath是W3C的推荐

XPath路径表达式

XPath使用路径表达式来选择XML文档中的节点或节点集。这些路径表达式非常类似于传统计算机文件系统中使用的路径表达式。

重构、测试和调试

重构以提高可读性和灵活性

提高代码的可读性

我们介绍三个简单的重构,使用lambda、方法引用和流,将它们应用到代码中,以提高代码的可读性:

  • 将匿名类重构为lambda表达式
  • 将lambda表达式重构为方法引用
  • 将命令式数据处理重构为流处理

从匿名类到lambda表达式

下面是使用匿名类创建一个Runnable对象和对应的lambda表达式:

Collection API增强

Collection工厂

Java 9引入了一些创建小型集合对象的方法,比如Arrays.asList()

List<String> friends = Arrays.asList("Raphael", "Olivia", "Thibaut");

Arrays.asList()返回一个固定大小的列表,可以对其进行更新,但不能添加或删除元素,否则抛出UnsupportedModificationException异常。

并行数据处理和性能

并行流

通过调用parallelStream方法,可以将集合转换为并行流。并行流是将元素分割成多个块的流,使用不同的线程处理每个块。因此,你可以自动划分指定操作的工作负载在多核处理器的所有核心上,并使它们一样忙。

使用流收集数据

假设有一个事务列表,你希望根据货币对它们进行分组。在Java 8之前,即使是这样一个简单的例子也很难实现,如下所示:

Map<Currency, List<Transaction>> transactionsByCurrencies = new HashMap<>();
for (Transaction transaction : transactions) {
    Currency currency = transaction.getCurrency();
	List<Transaction> transactionsForCurrency = transactionsByCurrencies.get(currency);
	if (transactionsForCurrency == null) {
		transactionsForCurrency = new ArrayList<>();
		transactionsByCurrencies.put(currency, transactionsForCurrency);
	}
	transactionsForCurrency.add(transaction);
}

在Java 8之后,仅用一条语句就可以获得完全相同的结果: