如何将 double 的二维数组转换为 double 数组的数组列表

问题描述 投票:0回答:1

我有这个问题,如果有任何帮助,我将不胜感激。 如您所见,我有一个 double 的二维数组,我需要将其转换为 ArrayList 所以原始数组中的每一行都可以代表 ArrayList 中的一个元素 问题是当我尝试打印 ArrayList 内容时,它只是不断打印数组中的最后一行。 关于这个问题的任何建议。谢谢,先进。

public ArrayList<double []> archiveFitConstract(double [][] fitArchive)
    {
       double [] tempFit=new double [4];
           ArrayList<double []> archiveFitness=new ArrayList<double []>();

          for (int x=0;x<fitArchive.length;x++)
           {
              for(int y =0;y<4;y++)
               {
                 tempFit[y]= fitArchive[x][y];
                 System.out.print(tempFit[y]+"         ");
                 }
              System.out.println();
              archiveFitness.add(tempFit);
           }
          System.out.println();
          System.out.println("intial archive");
          printArchive(archiveFitness);
          return archiveFitness; 
    }

这个二维数组我想把它转换成 ArrayList 就像你稍后看到的那样,它一直打印最后一行。

Fitness
   
60.0                219.71666666666667                0.18490938396984746                124.368696169                
61.0                155.76730190571715                0.13125463164401524                93.7106673432257                
62.0                195.78210894552723                0.16487933436614927                112.8983281476222                
63.0                172.07394540942929                0.14536074970791915                101.58210404696774                
65.0                203.10251256281407                0.17129050559257727                116.43772718840202                
66.0                153.63791374122368                0.1296451817308891                92.7160987213641                
67.0                226.977977977978                0.19146426027887184                127.89617891149551                
68.0                165.14566532258064                0.1387625314912389                98.15649544751814                
69.0                181.1142573273721                0.15296231218997905                105.91493516689121                
70.0                203.6655086848635                0.1716285585233586                116.69287491470966                
71.0                151.820806371329                0.12795824700977737                91.82175284299453                
72.0                254.11498257839722                0.21458682827303988                140.93654224981182                
73.0                164.41480377545952                0.13847785040993182                97.85100366623547                
74.0                149.65465465465465                0.12609544650795482                90.77683821827023                
75.0                288.0574541852402                0.24265368482941108                157.1753589652719                
76.0                247.961328705999                0.2089940208629129                137.94852911407042                
77.0                145.296875                0.12225987589989051                88.6607317501875                
78.0                158.8627254509018                0.13376831269214443                95.1824816904569                
79.0                160.6795443288757                0.13551520267957398                96.08478335697477                
80.0                176.28185907046478                0.14868345373249442                103.57125396525937                
81.0                145.4545905707196                0.122585391559813                88.76641840025809                
82.0                200.48725637181408                0.16923434552396546                115.19983416749625                
83.0                177.11773547094188                0.1489717667820992                103.91939441294389                
84.0                147.9602187966186                0.12460673053359415                89.95450722083342                
85.0                246.1454094292804                0.20790815415809186                137.11770216774192                
86.0                158.18762575452718                0.13359432412223482                94.91485849890745                
87.0                213.99343434343433                0.18013274330415796                121.62711220754545                
88.0                149.65589259075088                0.12621611751934492                90.79556545980905                
89.0                219.7357071213641                0.18515866929216437                124.4016367294223                
90.0                162.8432055749129                0.13731868967845387                97.1197535226202                
91.0                223.26102204408818                0.1881499445138285                126.09513421467133                
92.0                268.625                0.2258859896560145                147.81821620650004                
93.0                206.26036981509245                0.17357178775937412                117.91098175005698                
94.0                162.75236671649228                0.1371873166945113                97.06870347565919                
95.0                312.63992075284796                0.26419870501412723                169.02942509182168                
97.0                258.4793635007459                0.21827167555156368                143.03042665575728                
98.0                147.9395740465577                0.12471049003907862                89.96318732004161                
99.0                180.23282828282828                0.15148130611084                105.40034930627272                
        

intial archive
  
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
99.0        180.23282828282828        6.601474635215334        105.40034930627272        
java arraylist double
1个回答
0
投票

您的代码的问题是您在外循环的每次迭代中将相同的

tempFit
数组实例添加到
ArrayList
。这意味着
ArrayList
中的所有元素都引用同一个数组实例,并且对数组所做的任何更改都将反映到列表中的所有元素。

要解决此问题,您需要在外循环的每次迭代中创建一个新的数组实例,并将

fitArchive
数组中的值复制到其中。

相反,您可以尝试以下代码:

public ArrayList<double[]> archiveFitConstract(double[][] fitArchive) {
    ArrayList<double[]> archiveFitness = new ArrayList<>();

    for (int x = 0; x < fitArchive.length; x++) {
        double[] tempFit = new double[4];
        for (int y = 0; y < 4; y++) {
            tempFit[y] = fitArchive[x][y];
            System.out.print(tempFit[y] + "         ");
        }
        System.out.println();
        archiveFitness.add(tempFit.clone());
    }
    System.out.println();
    System.out.println("intial archive");
    printArchive(archiveFitness);
    return archiveFitness;
}

在修改后的代码中,使用

new
运算符在外循环的每次迭代中创建一个新的数组实例,并使用赋值语句
fitArchive
tempFit[y] = fitArchive[x][y];
数组中的值复制到其中。然后在
clone()
数组实例上调用
tempFit
方法,然后再将其添加到
ArrayList
。这将创建数组实例的新副本并将其添加到列表中,因此对数组所做的任何更改都不会影响列表中的其他元素。

© www.soinside.com 2019 - 2024. All rights reserved.