我有一个int数组int[] myArray = new int[100];
,想要获取最小10个(任何n个)元素的索引。我怎样才能做到这一点?
创建一个包含数字和索引的对象,然后创建这些对象的数组,然后执行Array.Sort(arrayset [],比较器)java
docs
。然后,您可以从已排序的数组中挑选出前x个项目。
编辑:像这样… [我曾经用它来根据’距离’进行排序
import java.util.Arrays;
import java.util.Comparator;
public class NearestObject
{
public NearestObject(int position, int distance)
{
this.Position = position;
this.Distance = distance;
}
public int Position = 0;
public int Distance = 0;
public static NearestObject[] SortDistance(NearestObject[] items)
{
Arrays.sort(items, new DistanceSort());
return items;
}
}
class DistanceSort implements Comparator<NearestObject>
{
public int compare(NearestObject o1, NearestObject o2)
{
return o1.Distance - o2.Distance;
}
}
问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出:
从提供的数组中返回 n 个最小元素。如果 n 大于或等于提供的数组长度,则返回原数组(按降序排列)。 结合使用Array.sort() 与展开操作符(...) ,创建一个数组的浅克隆,并按降序排列。 使用 Array.slice() 以获得指定的元素个数。 忽略第二个参数 n ,默认获取单个元素(以数组的形式)。 const minN = (arr, n = 1) => [...arr].sort
返回数组的第n个元素。 使用 Array.slice() 获取数组的第 n 个元素。如果索引超出范围,则返回 [] 。省略第二个参数 n ,将得到数组的第一个元素。 const nthElement = (arr, n = 0) => (n > 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; nthElement(['a', 'b', 'c'], 1);
问题内容: 我想知道是否有替代 使用 流 ? 问题答案: 定制收集器可以这样写: 并像这样使用它:
问题内容: 我只需要找到1D中最小的第n个元素。 例如: 我想获得第五个最小的元素,所以我想要的输出是。 我当前的解决方案是这样的: 但是,找到5个最小的元素然后再选择最大的元素对我来说似乎很笨拙。有更好的方法吗?我是否缺少一个可以实现目标的功能? 有些问题的标题与此相似,但我没有看到任何答案。 编辑: 我本来应该提到它,但是性能对我来说很重要。因此,虽然不错的解决方案对我来说不起作用。 结果:
问题内容: 我正在使用Javascript(ES6)/ FaceBook进行反应,并尝试获取大小变化的数组的前3个元素。我想做相当于Linq take(n)。 在我的Jsx文件中,我有以下内容: 然后得到我尝试的前三个项目 这不起作用,因为地图没有设置功能。 你能帮忙吗? 问题答案: 我相信您正在寻找的是: