所以,我不知道是否有一个优雅的解决方案,但这里。我想排序列表,但列表包含三种类型的项目。我想要的是A型在顶部按字母顺序排序,键入B & C在底部并按字母顺序排序(类型B & C将被组合)。根据两个条件对列表进行排序
这里是我的代码:
public int compareTo(Friendship another) {
if(this.getType().equals(TypeA) &&
another.getType().equals(TypeA)){ //if they are both type A, just sort based on user name
return this.getUsername().compareTo(
another.getUsername());
}
else if(this.getType.equals(TypeA)){
return -1;
}
else if(another.getType().equals(TypeA)){
return 1;
}
else{ //this will be hit if they are either Type B or C, then just sort based on username
return this.getUsername().compareTo(
another.getUsername());
}
}
编辑:对不起,我应该解释这个好多了。问题是上述代码不起作用。从我所看到的情况来看,这份名单似乎没有妥善订购。
TypeA列表出于某种原因与我想要的相反(Z - > A)。 TypeB & C列表只有一半排序。所以我假设我的代码中有一个错误。让我知道你是否需要更多信息
。
编辑2:做了一些更多的样本测试,它看起来像字符串根本没有被排序。我做了两个
this.getUsername().compareTo(
another.getUsername());
和
another.getUsername().compareTo(
this.getUsername());
编辑3:你们是对的。我的代码其他地方出现了一个错误(这是无关的)。对不起......在这种情况下也不知道该怎么做。我该给谁正确的答案?
您的字母顺序排序不会按照您指定的方式进行。 String.compareTo(String)使用词典排序。您可能需要考虑区分大小写。 对不起,如果这使得它稍微优雅看看。 – 2015-01-26 22:16:49
@StephenSouness我认为这不重要。它应该正确地对字符串的排序方式进行排序 – Sree 2015-01-27 00:04:34
好的。没有更多的上下文很难说清楚,但是如果你乐于让Zebra在食物之前展示(例如),那么这就是你的决定。 – 2015-01-27 00:15:09