如何获取给定LinkedHashSet元素的索引而无需迭代?


问题内容

可能吗?

说你有

private Set<String> names = new LinkedHashSet<String>();

并且Strings是“迈克”,“约翰”,“卡伦”。

是否可以不经过迭代就返回“约翰”的索引是“ 1”?

以下工作正常..与此问题,我想知道是否有更好的方法

for (String s : names) {
    ++i;
    if (s.equals(someRandomInputString)) {
        break;
    }
}

问题答案:

Set接口并没有像作为一种indexOf()方法。您确实需要对其进行迭代或使用提供方法List接口代替。indexOf()

如果你想,转换SetList是很琐碎,它应该是传递的问题Set通过的构造函数List执行。例如

List<String> nameList = new ArrayList<String>(nameSet);
// ...