Ich habe eine Klasse namens User
und eine Datei Users.csv
, wie unten genannt:Warum gibt diese Methode eine ArrayList mit den gleichen Objekten zurück?
Benutzerklasse:
public class User
{
private String name;
private String rg;
private String type;
public String getName()
{
return name;
}
public String getRg()
{
return rg;
}
public String getType()
{
return type;
}
public void setName(String n)
{
name = n;
}
public void setRg(String r)
{
rg = r;
}
public void setType(String t)
{
type = t;
}
}
Users.csv:
a,b,c
d,e,f
as,d,cf
Auch ich habe eine Klasse namens test
, die eine einzige Methode implementiert:
Testklasse:
public class test
{
public ArrayList<User> readUsers(String path) throws IOException //read all users from file and returns an ArrayList
{
ArrayList<User> list = new ArrayList<User>();
String[] str;
User u = new User();
BufferedReader buffRead = new BufferedReader(new FileReader(path));
String line = buffRead.readLine();
while(line != null)
{
str = line.split(",");
u.setName(str[0]); //sets each field read to "u"
u.setRg(str[1]);
u.setType(str[2]);
list.add(u); //adding user to the list to be returned
line = buffRead.readLine(); //reading next register
}
buffRead.close();
return list;
}
}
Das Problem ist in dem Verfahren readUsers()
. Es gibt mir eine ArrayList zurück, in der jedes Element gleich ist, und sie sind die in der letzten Zeile von Users.csv
.
Irgendein Tipp, warum es passiert? Ich kann es nicht herausfinden ...
Aber warum ist es nicht in Ordnung, für jede Schleife den Namen des Benutzers, Rg und Typ, dann fügen Sie ihn der Liste hinzu? Jedes Mal, wenn sich die Werte ändern, füge ich den Benutzer zur Liste hinzu – Quik19
Das ist die Antwort genau dort, die ich gerade geben wollte. Bitte stellen Sie sicher, dass Sie diese als richtig markieren. –
@ Quik19: Es gibt zwei Hauptursachen der Symptome, die Sie beschrieben haben - das gleiche Objekt wieder und wieder auffüllen (was Sie tun) oder übermäßige Verwendung von statischen Variablen (ein Fehler, den Sie " nicht machen). –