繁体   English   中英

无法添加到ArrayLists的ArrayList中

[英]Trouble adding to an ArrayList of ArrayLists

大家好,我目前使用我的一种方法遇到麻烦。

ArrayList<ArrayList<UnigramLanguageModel>> arrayListReadCategoriesDC() throws IOException{
    BufferedReader br = null;
    String line="";

    ArrayList<ArrayList<UnigramLanguageModel>> dcx = new ArrayList<ArrayList<UnigramLanguageModel>>();
    ArrayList<UnigramLanguageModel> ulm = new ArrayList<UnigramLanguageModel>();

    for(int i=0;i<7;i++){

        br = new BufferedReader(new FileReader("C:\\Users\\mccluskm\\Desktop\\trainingSet\\"+dcP[i]+"\\"+dc[i]+".txt"));
        while ((line = br.readLine()) != null){
            String[] split = line.split(":");
            ulm.add(new UnigramLanguageModel(split[0],Integer.parseInt(split[1]),true));
        }
        //System.out.println("Adding stage: "+ulm.size());
        dcx.add(ulm);
        //System.out.println("From within nested ArrayList: "+dcx.get(i).size());
        ulm.clear();
    }
    br.close();
    return dcx;
}

这是我从各种文件(代表不同类别)中读取的方法。 每个类别都有自己的ArrayList,然后我想返回一个ArrayList>

在main方法中,我这样称呼它:

UnigramLanguageModel ulm = new UnigramLanguageModel ();
ArrayList<ArrayList<UnigramLanguageModel>> dc =ulm.arrayListReadCategoriesDC();

它返回一个空的arraylist,其中包含7个空的arraylist,但我不知道为什么? 如果有人能帮助我,我将不胜感激!

我有你的问题。 请删除ulm.clear(); 从您的代码中调用。 这将解决您的问题。

Morover声明类似以下内容的方法不是好方法-

ArrayList<UnigramLanguageModel> ulm = new ArrayList<UnigramLanguageModel>();

请尝试以下-

List<UnigramLanguageModel> ulm = new ArrayList<UnigramLanguageModel>();

问题似乎是您总是将相同的引用插入最上面的数组列表中。 在循环中创建一个新的ulm对象,而不是使用ulm.clear 那应该解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM