public class Main {
public static void main(String[] args) {
new Main();
}
public Main(){
List<Country> list = new ArrayList<>();
list.add(new Country("Belgium"));
list.add(new Country("United Kingdom"));
list.add(new Country("Legoland"));
list.add(new Country("Bahrain"));
list.add(new Country("United States of America"));
list.add(new Country("Mexico"));
list.add(new Country("Finland"));
Collections.sort(list, new MyComparator());
for(Country c : list){
System.out.println(c.countryName);
}
}
}
class Country {
public Country(String name){
countryName = name;
}
int id;
String countryCode;
String countryName;
}
class MyComparator implements Comparator<Country> {
private static List<String> important = Arrays.asList("United Kingdom", "United States of America");
@Override
public int compare(Country arg0, Country arg1) {
if(important.contains(arg0.countryName)) { return -1; }
if(important.contains(arg1.countryName)) { return 1; }
return arg0.countryName.compareTo(arg1.countryName);
}
}
var result = countries
.OrderByDescending(item => item.countryName == "United States of America")
.ThenByDescending(item => item.countryName == "United Kingdom")
.ThenBy(item => item.countryName );
3条答案
按热度按时间8wigbo561#
结合
Collections.Sort(collection, Comparator)
创建您自己的comparator。它与普通Comparator
的不同之处在于,您必须显式给予始终希望放在顶部的条目。输出:
美利坚合众国
英国
巴林
比利时
芬兰
乐高乐园
墨西哥
我误解了你的问题在第一次(或它被添加为忍者编辑),所以这里的更新版本。
eyh26e7m2#
在
Comparator
中实现该规则。您可以使用Collections.sort()
对列表进行排序vohkndzv3#
简单一点: