[英]Having trouble with adding an ArrayList to an ArrayList of ArrayLists
[英]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.