Java 比较多个dynamics阵列的每个元素

Java 比较多个dynamics阵列的每个元素,java,Java,我有一个类型化对象的列表,其中列表的每个节点都有一个数组[n] 现在,不考虑时间复杂性,因为现在我需要将数组的每个元素与列表中其他数组的所有元素进行比较。我该怎么做?因为如果列表的大小是固定的,我会这样做(假设大小是3): 但是没有固定大小的列表?如何实现我的目标?在不确定数量的循环中?听起来像是递归: void doAll(List<ArrayHolder> lst) { doAllFrom(lst, 0); } void doAllFrom(List<ArrayHo

我有一个类型化对象的列表,其中列表的每个节点都有一个数组[n]

现在,不考虑时间复杂性,因为现在我需要将数组的每个元素与列表中其他数组的所有元素进行比较。我该怎么做?因为如果列表的大小是固定的,我会这样做(假设大小是3):


但是没有固定大小的列表?如何实现我的目标?

在不确定数量的循环中?听起来像是递归:

void doAll(List<ArrayHolder> lst) {
    doAllFrom(lst, 0);
}
void doAllFrom(List<ArrayHolder> lst, int off) {
    if (off == lst.length()) {
        //do something
    } else {
        ArrayHolder arrayHolder = lst.get(off);
        for (Array nthArray : arrayHolder.getArray()) {
            doAllFrom(lst, off+1);
        }
    }
}
这将完成您的工作,但复杂性太糟糕了。
考虑到数组的元素是整数。

你的答案绝对正确,但我认为我的问题太笼统了,对此表示抱歉。列表大小为n,数组大小为m(相互独立)。我必须找到每个数组中时间戳接近10秒的元素。也许我会提出另一个问题,但现在,这是最好的answer@Pikappa数组大小不同并不重要,for循环将处理这个问题(每帧一个)。上面代码中的所有索引都在列表中(并匹配
ArrayHolder[]
),而不是您的数组。
void doAll(List<ArrayHolder> lst) {
    doAllFrom(lst, 0);
}
void doAllFrom(List<ArrayHolder> lst, int off) {
    if (off == lst.length()) {
        //do something
    } else {
        ArrayHolder arrayHolder = lst.get(off);
        for (Array nthArray : arrayHolder.getArray()) {
            doAllFrom(lst, off+1);
        }
    }
}
void doAll(List<ArrayHolder> lst) {
    doAllFrom(lst, new ArrayHolder[lst.size()], 0);
}
void doAllFrom(List<ArrayHolder> lst, ArrayHolder[] holders, int off) {
    if (off == lst.size()) {
        //do something
    } else {
        ArrayHolder arrayHolder = lst.get(off);
        for (Array nthArray : arrayHolder.getArray()) {
            holders[off] = nthArray;
            doAllFrom(lst, holders, off+1);
        }
    }
}
for(Array first : lst.get(0).getArray()){
    for(int i: first){                    //i is first element of comparison
       for(Array second : lst.get(0).getArray()){
          for(int j: second){             //j is second element of comparison
              if(i compare j)
              //do something
          }
       }
    }
}