Java 有没有其他方法可以从数组中提取元素对?

Java 有没有其他方法可以从数组中提取元素对?,java,Java,我正在考虑从ArrayList中提取元素对 例如,ArrayList的值是[1,2,3,4,5,6,7,8,9…100],我应该将其成对 简单的方法是按顺序制作1,21,31,4..11002,32,42,5。。99100 但是,如果数组中有50000个元素,则需要很长时间 我想知道是否有什么特别的方法。问题的空间和时间复杂性为On2,这意味着任何解决方案都会很慢,但是您可能会发现不需要实际创建所有对,而是返回给定索引的对 也许是这样的: private int[] numbers; // i

我正在考虑从ArrayList中提取元素对

例如,ArrayList的值是[1,2,3,4,5,6,7,8,9…100],我应该将其成对

简单的方法是按顺序制作1,21,31,4..11002,32,42,5。。99100

但是,如果数组中有50000个元素,则需要很长时间


我想知道是否有什么特别的方法。

问题的空间和时间复杂性为On2,这意味着任何解决方案都会很慢,但是您可能会发现不需要实际创建所有对,而是返回给定索引的对

也许是这样的:

private int[] numbers;  // initialised elsewhere
int[] pair(int n) {
    return new int[]{numbers[n / numbers.length, numbers[n % numbers.length]};
}

并行运行?你在寻找什么样的魔法咒语?你可以从N个值的列表中计算出你将获得多少对魔法咒语。对于N=100,从1开始得到99对,从2开始得到98对,…,从99开始得到1对,即得到99+98+…+1=99*99+1/2=4950对,也称为N*N-1/2对。因此,对于N=50000,您将获得1249975000对,即超过10亿对。这将需要时间来构建,并且可能会导致内存不足。你想想你在做什么。你到底想完成什么?