Java 使用JButton actionperformed类如何将元素从一个arraylist添加到另一个arraylist?

Java 使用JButton actionperformed类如何将元素从一个arraylist添加到另一个arraylist?,java,swing,jbutton,Java,Swing,Jbutton,我有一个返回arraylist的方法,我通过buttonListener调用它。我需要能够将生成的每个arraylist存储在另一个arraylist中。我该怎么做?每次我尝试时,它都会复制我用来跟踪推送结果的arraylist中的现有元素 private class ButtonListener implements ActionListener{ public void actionPerformed (ActionEvent e){ numCounter++; Strin

我有一个返回arraylist的方法,我通过buttonListener调用它。我需要能够将生成的每个arraylist存储在另一个arraylist中。我该怎么做?每次我尝试时,它都会复制我用来跟踪推送结果的arraylist中的现有元素

private class ButtonListener implements ActionListener{
public  void actionPerformed (ActionEvent e){
    numCounter++;
    String reqVal1 = requestor.getText();
    int reqVal = Integer.parseInt(reqVal1);
    request = reqVal;
    requestsArray.get(3).set(0,0);
    if(numCounter == 1){//---------------------------numCounter == 1 beginning--------   -------------------------
        workingVar = memSize/2; 
                if(request>workingVar){
                    requestsArray.get(3).set(0,1);
                }
                else{   
           reqCounter++;
    while (workingVar>=request){
        workingVar = workingVar/2;
        holes2.add(workingVar);
    }
    if(workingVar<request){
        workingVar=workingVar*2;
        holes2.add(workingVar);    
        holes2.remove(holes2.size()-2);
        holes2.remove(holes2.size()-1);
            }
    }
    e1=workingVar;
    }//-----------------------------------------------end of numCounter == 1 section-------------------------------------
    if(numCounter > 1){
        for (int y = 0; y<requestsArray.get(0).size();y++){
            if(requestsArray.get(1).get(y).equals("H")){
                holes.add((Integer)requestsArray.get(0).get(y));
            }
        }
        //BubbleSort of holes ArrayList
        int in, out;
        for(out= holes.size()-1; out>0;out--) 
            for(in =0; in<out;in++)
            if(holes.get(in)<holes.get(in+1)){
                int temp1 = holes.get(in+1);
                int temp2 = holes.get(in);
                holes.set(in, temp1);
                holes.set(in+1, temp2);
            }

    //calculates the value of e1 using holes array
        if(holes.isEmpty()){
            requestsArray.get(3).set(0, 1); 
        }
        else{
        for(element=holes.size()-1;element>-1;element--){//starts at end of holes array loops backwards
            e1 = holes.get(element); //assigns value of each element to e1  
         if(e1>=request)    //if value e1 is greater than request stop looping                                                           
            break;                        
            }

    workingVar=e1; //assign the value of e1 to workingVar
    if (request>e1){
        requestsArray.get(3).set(0, 1);                   
    }
    else{
        //---------------------code for populating holes2 array---------------------------
        reqCounter++;
    if(workingVar!=request && workingVar/2>=request){
        while (workingVar/2>=request){
            workingVar = workingVar/2;
            holes2.add(workingVar);
            }     
        if(workingVar<request){
            workingVar=workingVar*2;
            holes2.add(workingVar); 
                    }
                }
            }
        }
    }

    //Sort of Holes2 ArrayList - reorder's holes2 for initial set up and subsequent inserts
    int in, out;
    for(out= holes2.size()-1; out>0;out--) 
        for(in =0; in<out;in++)
        if(holes2.get(in)>holes2.get(in+1)){
            int temp1 = holes2.get(in+1);
            int temp2 = holes2.get(in);
            holes2.set(in, temp1);
            holes2.set(in+1, temp2);
        }

   //-------------------------------requestsArray Setups----------------------------------------------------
        //Initial setup of requestsArray 
    if(numCounter == 1){
        if(requestsArray.get(3).get(0).equals(0)){
        requestsArray.get(0).set(0,e1);
        requestsArray.get(1).set(0,"R");
        requestsArray.get(2).set(0, reqCounter);;
        for(int i = 0; i<holes2.size();i++){
            requestsArray.get(0).add(holes2.get(i));
            requestsArray.get(1).add("H");
            requestsArray.get(2).add(0);
            }
        }
        else{
            requestsArray.get(0).set(0,e1);
            requestsArray.get(1).set(0, "H");       
            requestsArray.get(2).set(0,0);
        }
    }

    //Subsequent setup of requestsArray

    int element2;           
    if(numCounter >1 && requestsArray.get(3).get(0).equals(0)){
        for(element2 = 0; element2< requestsArray.get(0).size(); element2++){
            if((Integer)requestsArray.get(0).get(element2)==e1 &&requestsArray.get(1).get(element2).equals("H") ){
                break;
                    }
        }
            if(holes2.isEmpty()){
            requestsArray.get(1).set(element2, "R");
            requestsArray.get(2).set(element2, reqCounter);
                    }
            else{ //holes2 is not empty
                requestsArray.get(0).add(element2, workingVar);
                requestsArray.get(2).add(element2,reqCounter);
                requestsArray.get(1).add(element2, "R");
                requestsArray.get(0).remove(element2+1);
                requestsArray.get(2).remove(element2+1);
                requestsArray.get(1).remove(element2+1);                    
                for(int i = 1; i<holes2.size()+1;i++){
                    requestsArray.get(0).add(element2+i,holes2.get(i-1));
                    requestsArray.get(1).add(element2+i,"H");
                    requestsArray.get(2).add(element2+i,0);
                    }
                }                           
        }


    //-----------------End Section for populating requestsArraywhen numCounter > 1---------------------------           

        //remove all values from holes1 and holes2
        holes.clear();
        holes2.clear();
        System.out.println(results1);
私有类ButtonListener实现ActionListener{
已执行的公共无效操作(操作事件e){
numCounter++;
String reqVal1=requestor.getText();
int reqVal=Integer.parseInt(reqVal1);
请求=请求值;
requestsArray.get(3.set)(0,0);
如果(numCounter==1){/------------------------------------numCounter==1开始---------------------------------
workingVar=memSize/2;
如果(请求>工作变量){
requestsArray.get(3.set)(0,1);
}
否则{
reqCounter++;
while(workingVar>=请求){
workingVar=workingVar/2;
孔2.添加(工作变量);
}
if(工作变量1){
对于(int y=0;y0;out--)
for(in=0;in=request)//如果值e1大于请求,则停止循环
打破
}
workingVar=e1;//将e1的值分配给workingVar
如果(请求>e1){
requestsArray.get(3.set)(0,1);
}
否则{
//---------------------填充holes2数组的代码---------------------------
reqCounter++;
if(workingVar!=请求&&workingVar/2>=请求){
while(workingVar/2>=请求){
workingVar=workingVar/2;
孔2.添加(工作变量);
}     

如果(workingVar我会考虑至少两种解决方案

  • 创建一个持续时间长的
    列表
    (全局变量或类似的,取决于您的需要),并使用
    List.addAll()
    方法

  • 创建一个
    Map您必须提供代码的关键部分,这样我们才能看到实际发生的情况。发布一个示例,说明您所做的工作以及您面临的困难,这样更容易帮助您,或者更快地获得更好的帮助,发布一个.added results1作为全局变量和results1.addAll(requestsArray);但是results1数组中的所有元素都被最近添加的元素复制了。@user1888433如果你想让我们帮助你,你必须按照我们说的做。Andrew告诉你要发布,所以请按我们说的做。我真的不知道你的代码是做什么的…添加了更简单的示例。希望这有帮助。我真的因为某些原因而在这里挣扎。谢谢!!
    
    public class mainClass{
            public static void main(String[] args){
    JFrame frame1 = new JFrame("testButton");
    frame1.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
    buttonExample b1 = new buttonExample(); 
    frame1.getContentPane().add(b1);
    frame1.pack();
    frame1.setVisible(true);
                }
    
        }
    
        public class Example {
                private int rand1; 
                private ArrayList<ArrayList> count; 
                private ArrayList<Integer> count2;
                private Random rnd;
                private int counter1;
                private ArrayList<ArrayList>count3;
            public Example(){
                count = new ArrayList<ArrayList>();
                count2 = new ArrayList<Integer>();
                rnd = new Random();
                count3 = new ArrayList<ArrayList>();
    }
            private void addCount2(){
                for(int x = 0; x<6;x++){
                rand1 = rnd.nextInt(6)+1;
                count2.add(rand1);// count2 == Integers
                }
            }
    
            public void addCount(){
                addCount2();
                count.add(count2);// count == count3
            }
            public ArrayList<ArrayList> displayCount(){
            return count;   
    
            }
    }
    
    public class buttonExample extends JPanel {
    private JButton button1;
    private Example example1;
    public buttonExample(){
    button1 = new JButton("Submit");
    add(button1);
    button1.addActionListener(new ButtonListener());
    example1 = new Example();
    }
    private class ButtonListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        example1.addCount();
        System.out.println(example1.displayCount().get(0));;
        }
    }
    }