java - 在 LinkedHashSet 中查找唯一值的索引
问题描述
我正在使用 LinkedHashSet 从 ArrayList 中获取所有唯一值。
我的代码如下所示:
Set<String> set = new LinkedHashSet<>( filteredTitles );
filteredTitles.clear();
filteredTitles.addAll( set );
例如,如果 filtersTitles 等于["a","b","c","a"]
它将返回 me ["a","b","c"]
。
如何获取唯一值的索引?例如在这里,[1,2,3]
因为 4 已经不是唯一的了。
谢谢
解决方案
对于每个唯一元素,您可以检索它在第一个列表中的第一个索引。索引也开始于0
List<String> titles = Arrays.asList("a", "b", "c", "a", "e");
List<String> uniqueTitles = new ArrayList<>(new LinkedHashSet<>(titles));
List<Integer> indices = uniqueTitles.stream().map(titles::indexOf).collect(Collectors.toList());
System.out.println(uniqueTitles); // [a, b, c, e]
System.out.println(indices); // [0, 1, 2, 4]
推荐阅读
- php - WooCommerce 订阅:当状态更改为“pending_cancel”时,从 $end_date 中减去 1 天
- postgresql - 在导入 csv 时将空值分配给数字列
- flutter - 我想让响应式应用栏颤动。根据我的设计
- c++ - 如果移动构造函数与复制构造函数相同,我是否应该分别重载右值和左值引用的函数
- qt - 在 QT 中使用触摸板的 Windows 10 手势的(一般)方法是什么?
- nmap - 如何在不压缩过滤和关闭端口的情况下运行 nmap 并输出到 xml
- javascript - JQuery 阻止表单在 ajax 中提交
- php - 如何在 wordpress 上设置分类类别作为我的页面?
- c++ - 如何避免 C++ 中的算术溢出?
- r - R中的贴现累积和