大家好我现在用我的一种方法遇到麻烦。
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&gt;
从主要方法中我称之为:
UnigramLanguageModel ulm = new UnigramLanguageModel ();
ArrayList<ArrayList<UnigramLanguageModel>> dc =ulm.arrayListReadCategoriesDC();
它返回一个空的一个arraylist,持有7个空的arraylists,我不知道为什么? 如果有人可以提供帮助,我会非常感激!
答案 0 :(得分:1)
我遇到了你的问题。
请从您的代码中删除ulm.clear();
来电。这将解决您的问题。
Morover声明下面的内容并不是好方法 -
ArrayList<UnigramLanguageModel> ulm = new ArrayList<UnigramLanguageModel>();
请尝试以下 -
List<UnigramLanguageModel> ulm = new ArrayList<UnigramLanguageModel>();
答案 1 :(得分:1)
问题似乎是你总是在最顶层的数组列表中插入相同的引用。而不是使用ulm.clear
,在循环中创建一个新的ulm对象。这应该可以解决这个问题。