arraylist不断更新其内容

时间:2016-02-25 06:02:39

标签: java eclipse arraylist

我理解的是'Arraylists'是对内存中某个地址的引用,所以要停止覆盖它。我们需要创建一个新的,这就是我所做的

基本上我试图从文件中加载一些数据并将加载的行与现有数据进行比较,如果存在,它将被添加到“temp_super”,然后将使用“temp_super”创建一个新的“NonPlayableFighter”

我也试图

temp_super = new ArrayList<SuperAttack>();

但同样的问题

ArrayList<x-men>  strongFoes= new ArrayList<x-men>();
ArrayList<SuperAttack>  temp_super = null;  
 BufferedReader br = new BufferedReader(new FileReader(filePath));
        String line = "";
        int position = 1;
        NonPlayableFighter non;


        int k=0;

        while ((line = br.readLine()) != null)
        {

            line.replace("\\s", "");
            String[] array = line.split(",");

                    temp_super = new ArrayList<SuperAttack>();
                    for (int i = 0; i < array.length; i++)
                    {
                        for (int j = 0; j < superattack.size(); j++)
                        {
                            if (array[i]
                                    .equals(superattack.get(j).getName()))
                            {
                                temp_super.add(superattack.get(j));
                                break;
                            }
                        }
                    }
                }
               if(k==1)
                 System.out.print(strongFoes.get(0)
                                    .getSuperAttacks().get(0).getName());
//i have checked till here and the first non is still have old data
           non = new NonPlayableFighter(name, level, maxhealth,
                            blastdamage, physicaldamage, maxki, maxstamina,
                            strong, temp_super, temp_ultimate);
           strongFoes.add(non);
            k++

......但我得到的却是整个“强敌”中的最后一个“temp_super” 就在非=新(...)预期数据之前 在数据被新的替换之后,我不知道为什么 为什么呢?

1 个答案:

答案 0 :(得分:1)

这里的问题是你只在super_temp

时初始化position == 1 ArrayList一次
if (position == 1)
{
    temp_super = new ArrayList<SuperAttack>();
    temp_super.clear();
    ...

但是,您可以通过执行position++来增加排名,并且所有后续non = new NonPlayableFighter(...)次调用都具有temp_super的相同对象。