【发布时间】:2014-09-16 21:46:34
【问题描述】:
如何在 Java 8 中使用比较器和参数对集合进行排序?
这是一段代码:
List<Point> sortedNeurons = neurons.parallelStream()
.sorted((n1, n2) -> Double.compare(
n1.getEuclideanDistanceFrom(inputVector),
n2.getEuclideanDistanceFrom(inputVector)))
.collect(Collectors.toList());
您将获得一个参数 inputVector,该参数可以传递给返回原始双精度值的函数。如果应用于集合的元素,它会返回一些数字。 我希望按此值对集合进行排序。 类似的东西:从神经元顺序中选择 id 通过 getEuclideanDistanceFrom(inputVector, id);
这里有三个问题:
- nx.getEuclideanDistanceFrom(inputVector) 重复两次。
- 当使用 order by 子句时,我想使用 double 类型的自然排序,而不需要声明它,就像在 SQL 查询中一样。
- 也许 n1, n2 -> n1, n2 可以用双冒号 :: 表示法代替。
附:我有一种强烈的感觉,可以使用 bifunction 或 biconsumer 之类的东西来修复它......但无法弄清楚......
【问题讨论】:
标签: java lambda java-8 higher-order-functions java-stream