Java 合并两个数组列表

Java 合并两个数组列表,java,arraylist,Java,Arraylist,我必须将两个arraylist交织成一个arraylist,但我似乎无法解决这个问题。当列表1的大小更大或列表2的大小更大时,代码应该可以工作 我还没有学习任何未包含在下面代码中的方法或术语 非常感谢您的帮助。非常感谢。以下是我到目前为止的情况: public static void interLeave(ArrayList<String> list1, ArrayList<String> list2) { ArrayList<String> te

我必须将两个arraylist交织成一个arraylist,但我似乎无法解决这个问题。当列表1的大小更大或列表2的大小更大时,代码应该可以工作

我还没有学习任何未包含在下面代码中的方法或术语

非常感谢您的帮助。非常感谢。以下是我到目前为止的情况:

public static void interLeave(ArrayList<String> list1, ArrayList<String> list2)
{ 

    ArrayList<String> tempList = new ArrayList<>();

    int count = 1; 
    int length = list1.size() + list2.size();
    String temp1 = "";
    String temp2 = "";
    boolean test = true;

    if (list1.size() >= list2.size())
    {
        for (int j = 0; j<length; j++)
        {
            for (int i = 0; i < length ; i++)
            {
                tempList.add(2*i, list1.get(i));
                tempList.add(2*i+1, list2.get(i));
                count++;
                if (count == list2.size())
                {
                    break;
                }
            }
        }
        list1.clear();
        list1.addAll(tempList);
    }
    else
    {
        for (int i = 0; i<length; i++)
        {
            list1.add(2*i+1, list2.get(i));
            count++;
            if (count == list1.size())
            {
                break;
            }
        }
    }
public static void main(String[] args) 
{ 
    ArrayList list1 = new ArrayList(); 
    list1.add(2); 
    list1.add(3); 
    list1.add(7); 

    ArrayList list2 = new ArrayList();
    list2.add("Hi?"); 
    list2.add("name"); 
    list2.add("mallory");
    list2.add("nice"); 

    ArrayList list3 = new ArrayList(); 
    list3.add("my"); 
    list3.add("is"); 
    list3.add("pizzazz"); 

    interLeave(list2, list3);
    System.out.print(list2);
publicstaticvoidinterleave(arraylistlist1,arraylistlist2)
{ 
ArrayList tempList=新的ArrayList();
整数计数=1;
int length=list1.size()+list2.size();
字符串temp1=“”;
字符串temp2=“”;
布尔检验=真;
如果(list1.size()>=list2.size())
{
对于(intj=0;j试试这个

  import java.util.ArrayList;

public class Test{

public static void interLeave(ArrayList<String> list1,
        ArrayList<String> list2) {

    ArrayList<String> tempList = new ArrayList<>();

    int count = 1;
    int length = list1.size() + list2.size();
    String temp1 = "";
    String temp2 = "";
    boolean test = true;

    if (list1.size() >= list2.size()) {
        for (int j = 0; j < list2.size(); j++) {
            for (int i = 0; i < list2.size(); i++) {
                tempList.add(2 * i, list1.get(i));
                tempList.add(2 * i + 1, list2.get(i));
                count++;
                if (count == list2.size()) {
                    break;
                }
            }
        }
        list1.clear();
        list1.addAll(tempList);
    } else {
        for (int i = 0; i < length; i++) {
            list1.add(2 * i + 1, list2.get(i));
            count++;
            if (count == list1.size()) {
                break;
            }
        }
    }
}

public static void main(String[] args) {
    ArrayList list1 = new ArrayList();
    list1.add(2);
    list1.add(3);
    list1.add(7);

    ArrayList list2 = new ArrayList();
    list2.add("Hi?");
    list2.add("name");
    list2.add("irene");
    list2.add("nice");

    ArrayList list3 = new ArrayList();
    list3.add("my");
    list3.add("is");
    list3.add("Lee");

    interLeave(list2, list3);
    System.out.print(list2);
}
}
(简化一下)怎么样

publicstaticvoidinterleave(arraylistlist1,arraylistlist2)
{ 
ArrayList tempList=新的ArrayList();
int length=Math.max(list1.size(),list2.size());
对于(int j=0;j1个以上溶液

public static void interLeave(ArrayList<String> list1, ArrayList<String> list2) 
publicstaticvoidinterleave(arraylistlist1,arraylistlist2)
{

ArrayList tempList=new ArrayList();
迭代器迭代器1=list1.Iterator();
迭代器迭代器2=list2.Iterator();
while(Iterator1.hasNext()&&Iterator2.hasNext())
{  
add(Iterator1.next());
add(Iterator2.next());
}
while(Iterator1.hasNext()){
add(Iterator1.next());
}
while(Iterator2.hasNext()){
add(Iterator2.next());
}
清单1.clear();
列表1.addAll(圣殿骑士);

}

问题出在哪里?错误是什么?我认为您遇到了越界异常。输出看起来不太正确,是吗?输出应该是什么样子,抱歉,我刚刚删除了发生的错误并发布了
public static void interLeave(ArrayList<String> list1, ArrayList<String> list2) 
{ 

    ArrayList<String> tempList = new ArrayList<String>();

    int length = Math.max(list1.size(), list2.size());

    for (int j = 0; j<length; j++)
    {
        if (j < list1.size()) {
            tempList.add(2*j, list1.get(j));
        }
        if (j < list2.size()) {
            tempList.add(2*j+1, list2.get(j));
        }
    }
    list1.clear();
    list1.addAll(tempList);
}
public static void interLeave(ArrayList<String> list1, ArrayList<String> list2) 
ArrayList<String> tempList = new ArrayList<>();

Iterator<String> Iterator1 = list1.iterator();  
Iterator<String> Iterator2 = list2.iterator();  

while (Iterator1.hasNext() && Iterator2.hasNext())  
{  
    tempList.add(Iterator1.next());  
    tempList.add(Iterator2.next()); 
}
while (Iterator1.hasNext()){
    tempList.add(Iterator1.next()); 
}
while (Iterator2.hasNext()){
    tempList.add(Iterator2.next()); 
}
list1.clear();
list1.addAll(tempList);