Ho un utente di classe che contiene un campo booleano, voglio ordinare un elenco di utenti, voglio che gli utenti che hanno il campo booleano siano uguali per essere in cima alla lista e che Voglio ordinarli per nome. Qui è la mia classe:Confronta due oggetti con due criteri
public class User{
int id;
String name;
boolean myBooleanField;
public User(int id, String name, boolean myBooleanField){
this.id = id;
this.name = name;
this.myBooleanField = myBooleanField;
}
@Override
public boolean equals(Object obj) {
return this.id == ((User) obj).id;
}
}
Ecco un esempio per cancellare quello che voglio: Diciamo che ho questo insieme di utenti:
ArrayList<User> users = new ArrayList<User>();
users.add(new User(1,"user1",false));
users.add(new User(2,"user2",true));
users.add(new User(3,"user3",true));
users.add(new User(4,"user4",false));
Collections.sort(users, new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
//Here i'm lookin for what should i add to compare the two users depending to the boolean field
return u1.name.compareTo(u2.name);
}
});
for(User u : users){
System.out.println(u.name);
}
voglio ordinare gli utenti per ottenere questo risultato :
user2
user3
user1
user4
Credo che si intende else if (u1.myBooleanField && u2.myBooleanField!) – user3578325