Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将两个子列表混合到一个列表中_Java_List_Arraylist - Fatal编程技术网

Java 将两个子列表混合到一个列表中

Java 将两个子列表混合到一个列表中,java,list,arraylist,Java,List,Arraylist,我有两个相同大小的列表: 在我的“a”列表中 在“b”列表中,我有 我要做的是将这两个列表混合在一起,以得到以下结果: Position[0] = 1,2,3,4,5,6 Position[1] = 7,8,9,10,11,12 Position[2] = 13,14,15,16,17,18 Position[3] = 19,20,21,22,23,24 我试过这个 public List<Object[]> getMixedList() { List a, b; a = ge

我有两个相同大小的列表:

在我的“a”列表中

在“b”列表中,我有

我要做的是将这两个列表混合在一起,以得到以下结果:

Position[0] = 1,2,3,4,5,6
Position[1] = 7,8,9,10,11,12
Position[2] = 13,14,15,16,17,18
Position[3] = 19,20,21,22,23,24
我试过这个

public List<Object[]> getMixedList() {
 List a, b;
 a = getLista();
 b = getListb();
 List<Object[]> ab = new ArrayList<Object[]>(a);
 ab.addAll(b);
 return ab
}
我一直在使用循环,但不知道怎么做,因为当我对列表“b”进行第二次迭代时,它会将整个列表b添加到列表a的第一个位置,以此类推


欢迎提供任何线索。

尝试同时迭代两个循环。我不想给你更多的信息,因为这听起来像是一个家庭作业问题。

不会附加
集合
的相应元素,而是将它们附加到
集合
的末尾

您需要迭代第一个集合,创建一个新数组,并将两个对应数组的元素复制到新数组中,然后再将其设置为新数组元素

由于数组的大小是固定的,所以可以使用创建一个新的数组,该数组的大小足以容纳来自相应数组元素的条目

List<Object[]> getMergedList(List<Object[]> list1, List<Object[]> list2) {
    List<Object[]> mergedList = new ArrayList<Object[]>();

    for (int i = 0; i < list1.size(); i++) {

        Object[] objects1 = list1.get(i);
        Object[] objects2 = list2.get(i);

        int length1 = objects1.length;
        int length2 = objects2.length;
        Object[] mergedArray = new Object[length1 + length2];
        System.arraycopy(objects1, 0, mergedArray, 0, length1);
        System.arraycopy(objects2, 0, mergedArray, length1, length2);

        mergedList.add(mergedArray);
    }

    return mergedList;
}
List getMergedList(列表列表1、列表2){
List mergedList=new ArrayList();
对于(int i=0;i
addAll
将元素追加到
ArrayList
的末尾。在您的案例中,它只是串联

这个例子有点难处理,因为数组是固定长度的。您最好使用一个列表列表,或者在这种情况下使用
list
s的
Map
。如果无法使用当前格式,则需要使用新的数组列表。

for(int i=0;i<4;++i){
for (int i = 0; i < 4 ; ++i) {
   Object[] aContent = a.get(i);
   Object[] bContent = b.get(i);
   ... add your code to merge the content ..
   ab.add(mergedResult);
}
Object[]aContent=a.get(i); 对象[]b内容=b.get(i); …添加代码以合并内容。。 ab.add(合并结果); }
我迭代列表“a”并获取两个列表位置的元素,但我不知道如何将它们合并到一个对象中,以将它们添加到我的最终列表中。无论如何,谢谢,也许你的更有效,顺便说一句,直到netbeans建议使用System.arraycopy而不是我的for,我才知道您在谈论System.arraycopy。我已经这样做了,问题是我不知道如何连接这两个对象:列表“a”的元素在位置[0]处,列表“b”的元素在位置0处,但如何合并它们?我试过添加(aContent);添加(b内容);但是它把它放下来而不是混合。我会给你一个线索
mergedResult
是另一个对象数组,您必须将a和b的内容逐个移动到其中。完成后,我使用一个矩阵逐个保存元素,并使用2,以便s先迭代a,然后迭代b。谢谢你的帮助。
Position[0] = 1,2,3
Position[1] = 7,8,9
Position[2] = 13,14,15
Position[3] = 19,20,21
Position[4] = 4,5,6
Position[5] = 10,11,12
Position[6] = 16,17,18
Position[7] = 22,23,24
List<Object[]> getMergedList(List<Object[]> list1, List<Object[]> list2) {
    List<Object[]> mergedList = new ArrayList<Object[]>();

    for (int i = 0; i < list1.size(); i++) {

        Object[] objects1 = list1.get(i);
        Object[] objects2 = list2.get(i);

        int length1 = objects1.length;
        int length2 = objects2.length;
        Object[] mergedArray = new Object[length1 + length2];
        System.arraycopy(objects1, 0, mergedArray, 0, length1);
        System.arraycopy(objects2, 0, mergedArray, length1, length2);

        mergedList.add(mergedArray);
    }

    return mergedList;
}
for (int i = 0; i < 4 ; ++i) {
   Object[] aContent = a.get(i);
   Object[] bContent = b.get(i);
   ... add your code to merge the content ..
   ab.add(mergedResult);
}