gpt4 book ai didi

java - 如何使用 Java 8 中的比较器按参数对流进行排序?

转载 作者:行者123 更新时间:2023-12-02 09:46:30 25 4
gpt4 key购买 nike

如何在 Java 8 中使用比较器和参数对集合进行排序?

这是一段代码:

    List<Point> sortedNeurons = neurons.parallelStream()
.sorted((n1, n2) -> Double.compare(
n1.getEuclideanDistanceFrom(inputVector),
n2.getEuclideanDistanceFrom(inputVector)))
.collect(Collectors.toList());

您将获得一个参数 inputVector,该参数可以传递给返回原始 double 值的函数。如果应用于集合的元素,它将返回一些数字。我希望集合按此值排序。类似于:从神经元顺序中选择 id getEuclideanDistanceFrom(inputVector, id);

这里存在三个问题:

  1. nx.getEuclideanDistanceFrom(inputVector) 重复两次。
  2. 我想使用 double 类型的自然排序,而不需要声明它,就像在 SQL 查询中使用 order by 子句时一样。
  3. 也许 n1, n2 -> n1, n2 可以用双冒号::符号代替。

附注我有一种强烈的感觉,它可以使用诸如双功能或双消费者之类的东西来修复......但无法弄清楚......

最佳答案

也许你可以用Comparator#comparingDouble来做到这一点:

List<Point> sortedNeurons = neurons.parallelStream()
.sorted(Comparator.comparingDouble(p -> p.getEuclideanDistanceFrom(inputVector)))
.collect(Collectors.toList());

关于java - 如何使用 Java 8 中的比较器按参数对流进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com