Hallo!
Später sollen noch mehr Infos in die UserStats Klasse, zB. int bans etc.
In der main() iteriere ich durch die Collection die ich mit statsMap.values() bekomme, aber wie sortiere ich jetzt zB. danach, welcher User die meisten Logins hat?
Ich will quasi zum Ende sowas wie 'Today's most logins by <username>, he logged in XX times, followed by <username> with NN logins!'
Hat vll. jemand einen Tipp oder ein kleines Beispielprogramm, wie ich die UserStats() am besten auf/absteigend sortieren kann?
Gruß
Code:
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
UserStats user1 = new UserStats("p");
UserStats user2 = new UserStats("m");
UserStats user3 = new UserStats("l");
UserStats user4 = new UserStats("t");
UserStats user5 = new UserStats("a");
//add 3 logins to p
user1.incrementLoginsAmount();
user1.incrementLoginsAmount();
user1.incrementLoginsAmount();
//add 1 login to m
user2.incrementLoginsAmount();
//add 2 logins to l
user3.incrementLoginsAmount();
user3.incrementLoginsAmount();
//no logins for t yet!
//add 1 year to t
user4.incrementAgeAmount();
//add 5 logins to a
user5.incrementLoginsAmount();
user5.incrementLoginsAmount();
user5.incrementLoginsAmount();
user5.incrementLoginsAmount();
user5.incrementLoginsAmount();
HashMap statsMap = new HashMap<String, UserStats>();
statsMap.put(user1.getUsername(), user1);
statsMap.put(user2.getUsername(), user2);
statsMap.put(user3.getUsername(), user3);
statsMap.put(user4.getUsername(), user4);
statsMap.put(user5.getUsername(), user5);
Collection col = statsMap.values();
Iterator iter = col.iterator();
while(iter.hasNext()) {
UserStats test = (UserStats) iter.next();
System.out.println("USERNAME: "+test.getUsername()+" LOGiNS: "+test.getLoginsAmount());
}
}
}
Code:
public class UserStats {
private String username;
private Integer logins;
private Integer age;
public UserStats(String username) {
this.username = username;
logins = 0;
age = 0;
}
public int getLoginsAmount() { return logins; }
public int getAgeAmount() { return age; }
public String getUsername() { return username; }
public void incrementLoginsAmount() { logins++; }
public void incrementAgeAmount() { age++; }
}
Später sollen noch mehr Infos in die UserStats Klasse, zB. int bans etc.
In der main() iteriere ich durch die Collection die ich mit statsMap.values() bekomme, aber wie sortiere ich jetzt zB. danach, welcher User die meisten Logins hat?
Ich will quasi zum Ende sowas wie 'Today's most logins by <username>, he logged in XX times, followed by <username> with NN logins!'
Hat vll. jemand einen Tipp oder ein kleines Beispielprogramm, wie ich die UserStats() am besten auf/absteigend sortieren kann?
Gruß