私はファイルを読み込み、それをStringと2つのListを持つ "Allabaque"というクラスに渡そうとしています。私が最初のアバークを読み終えたら、私は2つのリストをクリアして次の値を得ることができますが、リストをクリアすると、新しいアバークを追加しても、関数は2つの新しいアバークを渡します空リスト。ここでは、コードは次のとおりです。次のファンクションに影響を与えずにArrayListをクリアするには?
public void importFrom(String filename) {
try (
FileInputStream fis = new FileInputStream(filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));) {
String line;
String line2;
int c = 0;
List<String> Pression = new ArrayList<>();
List<String> Couple = new ArrayList<>();
List<String> P2 = new ArrayList<>();
List<String> C2 = new ArrayList<>();
String Cle = "null";
while ((line = reader.readLine()) != null) {
if (c == 2 && !"|".equals(line)) {
String[] arg = line.split("-");
boolean u = Pression.add(arg[0]);
boolean u2 = Couple.add(arg[1]);
}
if (c == 1) {
Cle = line;
c = 2;
//System.out.printf("%s",Cle);
}
if ("|".equals(line)) {
c = 1;
if (!"null".equals(Cle)) {
//P2 = Pression;
//C2 = Couple;
addAbaque(new Abaque(Cle, Pression, Couple));//addAbaque(new Abaque(Cle,P2,C2));
Couple.clear();
Pression.clear();
}
}
}
} catch (IOException ioe) {
System.out.printf("Erreur import");
}
}
addAbaque方法は、私はそれがメモリに問題があるのですが、私はreaalyそれを修正する方法を知ってはいけないことを発見したと思うのデバッグを使用したシンプルな
public void addAbaque(Abaque abaque) {
mAbaques.add(abaque);``
}
です。
私は2つのintermedieries Listで試してみましたが、私はコメントのようにそれを打ちましたが、まだ何もありません。あなたは、コンストラクタにList
の参照を渡すリストのコピーではなくされているのでCouple
とPression
リストをクリア
試してみてください** **試してみてください** **試してみてください(** –
@YoucefLaidani OPは[try-with-resources]を使用しています(https://docs.oracle.com/javase/tutorial /essential/exceptions/tryResourceClose.html)。 –
私はこの種の**試してみるのは初めてですよ(**私はそれについて学ぶべきです、@Andy Turnerに感謝します –