使用 Java 流查找集合中最接近的对

问题描述

我有一组元素,它们之间有距离度量。我正在寻找一种方法来从这个集合中找到最接近的一对元素。使用循环我将使用以下算法:

np.nan

有没有一种优雅的方式使用 Java 流来实现这个算法?

解决方法

可能是这样的:

Optional<SimpleEntry> closestPair = elements.stream()
    .flatMap(elem -> elements.stream()
        .filter(other -> !elem.equals(other))
        .map(other -> new SimpleEntry(elem,other))
    .min(Comparator.comparingDouble(e -> e.getKey().distance(e.getValue()));

但您可能希望将这些内联 lambda 提取为单独的方法。