java - Collections.sort 不改变列表
问题描述
我有一个游戏列表,我希望按他们的得分数量(按降序排列)进行排序。我为此目的编写了这段代码;
public void OnResponse(Object response) {
List<Game> games = (List<Game>)response;
Collections.sort(games, new Comparator<Game>() {
@Override
public int compare(Game o1, Game o2) {
if( o1.scores.size() > o2.scores.size()) {
return 1;
} else {
return 0;
}
}
});
trendingGames = games;
gridView = view.findViewById(R.id.trendingGrid);
gridView.setAdapter(new TrendingAdapter(games, getContext()));
view.findViewById(R.id.progressBar).setVisibility(View.GONE);
}
但是,当我检查调试器时,我发现列表根本没有改变。
解决方案
你可以用它Integer#compare
来缓解你的生活并确保你的Comparator
合同得到尊重
@Override
public int compare(Game o1, Game o2) {
int score1 = o1.scores.size();
int score2 = o2.scores.size();
return Integer.compare(score1, score2);
}
推荐阅读
- c# - MimeMessage Get Attachment Name
- python - invalid syntax when trying to make a dictionary comprehension?
- google-app-engine - 我可以让 GCS 存储桶仅对特定人员可用(或使用密码)吗
- arrays - 在VBA中访问类对象数组中的浮点数组
- ruta - Ruta,识别模式并返回其中的一部分
- ios - iOS SpringBoard 不加载通知服务扩展
- python - 根据我的代码,多行到单行
- sql-server - 将服务器登录/数据库用户权限降级为 SELECT、查看定义、执行存储过程和使用函数
- python - 在没有外部库的情况下将 IPv6 转换为 long
- flutter - Storing data from form using onSubmitted vs onPressed