java - 使用集合删除列表中的索引
问题描述
我有一个字符串 TrackArray 的 ArrayList,它定义了轨道的唯一 ID。我还需要Set<Integer> indexSet
保存需要从 TrackArray 中删除的曲目 ID 的索引。
我尝试了以下方法:
public void deleteAllTracks(){
if (!indexSet.isEmpty() ) {
TrackArray.removeAll(indexSet);
}
notifyDataSetChanged();
indexSet.clear();
}
代码不起作用,可能是因为它没有将 Integer 转换为 RemoveAll 中的 int。除了一个一个删除之外,我还没有找到另一种解决方法。
解决方案
理想的解决方案是从indexSet
更改Set<Integer>
为Set<String>
. 否则你不能用它从你的ArrayList<String>
.
如果无法更改,可以将其转换为Set<String>
with:
Set<String> strIndexSet = indexSet.stream().map(Integer::toString).collect(Collectors.toSet());
所以你可以写:
public void deleteAllTracks(){
if (!indexSet.isEmpty() ) {
TrackArray.removeAll(indexSet.stream().map(Integer::toString).collect(Collectors.toSet());
}
notifyDataSetChanged();
indexSet.clear();
}
但是,每次调用您的方法时运行此转换的效率会降低。
推荐阅读
- android - 我无法在活动中导入 java.util.date
- tensorflow - model.compile 的两种描述得到不同的结果
- clang - 我可以使用哪些 clang 函数来查找具有 '&' 的声明,例如 'int *m = &b'?
- python - 将 float 的 tuple-1 列表转换为 int 集
- azure - 如何安装 Azure Az - 无法将值“2.0.0-preview”转换为类型“System.Version”
- mysql - 计算列和总和
- netezza - 如何从 Netezza 删除用户
- java - 元素 web-app 必须在 Intellij 中声明错误
- asp.net-mvc - 将文件夹添加到 ASP.net MVC 5 站点中的所有 URL
- excel - 未找到命名参数 VBA 编译错误