我有一个足球桌,我试图按赢得的比赛排序。
class TeamStandings implements Comparable<TeamStandings>{
protected int matchesPlayed = 0;
protected int won = 0;
protected int draw = 0;
protected int loss = 0;
protected int goalsScored = 0;
protected int goalsConceded = 0;
protected int goalDifference = 0;
protected int points = 0;
@Override
public int compareTo(TeamStandings other){
// compareTo should return < 0 if this is supposed to be
// less than other, > 0 if this is supposed to be greater than
// other and 0 if they are supposed to be equal
//System.out.println(this.won + " " + other.won + " " + Integer.valueOf(this.won).compareTo(Integer.valueOf(other.won)));
return Integer.valueOf(this.won).compareTo(Integer.valueOf(other.won));
}
}
private static HashMap sortByValues(HashMap map) {
List list = new LinkedList(map.entrySet());
// Defined Custom Comparator here
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
System.out.println(((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue()));
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}
});
// Here I am copying the sorted list in HashMap
// using LinkedHashMap to preserve the insertion order
HashMap sortedHashMap = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
sortedHashMap.put(entry.getKey(), entry.getValue());
//System.out.println(entry.getKey());
}
return sortedHashMap;
}
不知什么原因,我无法把桌子整理好。它只是停留在未排序的顺序中。我认为这与collection.sort位置的sortbyvalues函数有关。
你知道如何使用类中的won值对HashMap进行排序吗?
public void printTable(){
Map<String, TeamStandings> sortedTable = sortByValues(this.table);
System.out.println("Group: " + this.groupLetter);
System.out.println("Team"
+ "\t" + "MP"
+ "\t" + "W"
+ "\t" + "D"
+ "\t" + "L"
+ "\t" + "GS"
+ "\t" + "GC"
+ "\t" + "GD"
+ "\t" + "P");
//Iterator<Map.Entry<String, TeamStandings>> iterator = this.table.entrySet().iterator() ;
Iterator<Map.Entry<String, TeamStandings>> iterator = sortedTable.entrySet().iterator() ;
while(iterator.hasNext()){
Map.Entry<String, TeamStandings> team = iterator.next();
System.out.println(team.getKey()
+ "\t" + team.getValue().matchesPlayed
+ "\t" + team.getValue().won
+ "\t" + team.getValue().draw
+ "\t" + team.getValue().loss
+ "\t" + team.getValue().goalsScored
+ "\t" + team.getValue().goalsConceded
+ "\t" + team.getValue().goalDifference
+ "\t" + team.getValue().points);
}
}
谢谢
List list = new LinkedList(map.entrySet());
// Defined Custom Comparator here
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
System.out.println(((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue()));
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}
});
return Integer.valueOf(this.won).compareTo(Integer.valueOf(other.won)) * -1;
感谢@Justin和@Falsarella。
我不认为HashMap维护插入顺序。试试树图。或AVolpe建议的LinkedHashmap
http://docs.oracle.com/javase/7/docs/api/java/util/treemap.html
我想知道是否可以在同伴对象中使用类的属性。例如,以贝娄为例: 我不能通过c1或C2调用changeAge()函数。我可以使用changeAge的唯一地方是通过Person1.changeAge(),当Person1还没有用适当的构造函数实例化时。我想知道这些动作是不是有其他的选择,或者是没有,有同伴对象有什么意义呢
问题内容: 我正在尝试过滤一个类的实例数组。我想要一个由类属性之一过滤的新数组。Swift过滤器在此用例中的工作方式无法完全理解。 问题答案: 这应该工作… 您可能需要使您的枚举符合等式才能进行此比较。 $ 0是一个未命名的参数,您也可以这样做。 编辑:我刚刚测试了它,它的工作而不会使枚举符合等于。我认为您只需要在枚举带有参数时执行此操作。
今天,我意识到让数组像字典一样运行更有意义,这样我就可以通过名称而不是数字索引访问特定元素。我希望能够执行而不是(即使我声明了一个将submitButton映射到请求的索引的枚举)。 这是可行的,但我现在允许一堆欺骗我的代码库,这是很糟糕的。我希望对象知道,只有类型的东西才能放入其中。 我可以用这些字段声明一个类,因为我希望它们的数量在将来可以动态添加,所以下面的操作是不可行的。
当我使用Spring Boot的全局异常处理程序时,我得到了这个: org.springframework.expression.spel。SpelEvaluationException:EL1008E:在“java.util”类型的对象上找不到属性或字段“timestamp”。HashMap”-可能不是公共的? 这是我的代码,我已经在我的项目中导入了Spring Security和Thymele
问题内容: 我有一个具有多个相关属性的类,例如: 如果我正常地制作一个对象,那没有问题, 我将得到2个列表,和。 现在,如果我想先创建一个空对象,并为其分配一个属性,则希望其他属性自动更新,例如 我想自动更新,也想自动更新(分配和自动更新)。这可能吗? Class 是否是正确的选择? 谢谢大家,但是所有其他答案让我完全不知所措。谁能提供一个完整的解决方案,让我可以学习编写自己的解决方案? 我想实现
问题内容: 我有一个像这样的JSON字符串: 我想将属性更新为,如果值为,并且值为。 我已经到了这一点,但是不确定如何进行: 我不知道怎么去的是一个孩子。 提前致谢。任何指针都很棒。 问题答案: 您可以使用属性作为键来访问对象: 对于您的示例,请尝试: