首页 > 解决方案 > 在 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 已经不是唯一的了。

谢谢

标签: javalinkedhashset

解决方案


对于每个唯一元素,您可以检索它在第一个列表中的第一个索引。索引也开始于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]

推荐阅读