ho una classe chiamata User
e un file chiamato Users.csv
, come di seguito: classPerché questo metodo restituisce un ArrayList con tutti gli stessi oggetti? JAVA
utente:
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
Inoltre, ho avere una classe chiamata test
, che implementa un singolo metodo:
classe di test:
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;
}
}
Il problema è nel metodo readUsers()
. Mi sta restituendo un ArrayList in cui ogni elemento è lo stesso, e sono l'ultima riga di Users.csv
.
Qualche consiglio perché sta succedendo? Non riesco a capirlo ...
Ma perché non va bene, per ogni ciclo, impostare Nome utente, Rg e digitare, quindi aggiungerlo alla lista? Ogni volta che i valori cambiano, aggiungo l'utente alla lista – Quik19
Questa è la risposta giusta che stavo proprio per dare. Assicurati di contrassegnare questo come corretto. –
@ Quik19: Esistono due cause principali dei sintomi che hai descritto: riempiendo lo stesso oggetto in continuazione (cosa stai facendo) o l'uso eccessivo di variabili statiche (un errore che tu non fare). –