java - 通过参数从自定义 ArrayList 中删除重复项
问题描述
我面临一个我无法解决的问题:
我ArrayList
从电话里读到:
ArrayList<Game> gameResult = writeRead.getArrayList(this);
我将gamer
每个对象game
放入一个新的ArrayList
:
ArrayList<Gamer> gamerList = new ArrayList<>();
for (int i = 0; i < gameResult.size(); i++) {
gamerList.add(gameResult.get(i).getWinnerGamer());
}
现在,我想要的是:
- 添加
Gamer
一个ArrayList
如果不存在 - 如果存在,将 ++ 添加到名为的参数
LeaderPoints
- 按点排序
这是关于一个带有 custom 的排行榜活动ArrayList
,但我不是来做的。
我所有的代码:
private void setGamerList() {
ArrayList<Game> gameResult = writeRead.getArrayList(this);
ArrayList<Gamer> gamerList = new ArrayList<>();
ArrayList<Gamer> gamerNoDuplicate = new ArrayList<>();
if (gameResult != null) {
for (int i = 0; i < gameResult.size(); i++) {
gamerList.add(gameResult.get(i).getWinnerGamer());
}
}
Log.i(TAG, "--------------------------------");
Collections.sort(mGamerList, (o1, o2) ->
o2.getLeaderboardScore().compareTo(o1.getLeaderboardScore()));
}
解决方案
覆盖Gamer 对象类的equals 和 hashCode 方法。
然后在将对象添加到 ArrayList 之前,检查Arraylist.contains()
,如果是,那么您可以调用ArrayList.indexOf()
方法来获取该对象实例ArrayList
,增加 LeaderPoints 的值并调用ArrayList.set()
以将实例设置回相同的位置。
推荐阅读
- javascript - React-router-dom 链接在我的项目上不起作用
- xcode - 如何隐藏iOS模拟器工具栏?
- oracle - 简单的 ODPI-C 语句执行示例给出 ORA-00922
- android - 在 Android Studio 中安装 Chaquo.python 失败
- winforms - 如何将 FluentDesignForm 与 RibbonControl 一起使用?
- python - 使用 Python 和 BeautifulSoup 从 Yahoo Finance 抓取股票价格
- python-3.x - 我无法用 pip 安装 cupy
- java - Sprint Reactor Filter vs IF Then
- css - 无法通过编辑子主题 CSS 更改 WooCommerce“感谢您的订单”页面的外观
- go - Go:使用存储在 SmartCard 上的客户端证书的 HTTPS 请求 (Windows)