【发布时间】:2011-10-27 11:56:13
【问题描述】:
有可能吗?
说你有
private Set<String> names = new LinkedHashSet<String>();
和Strings 是“Mike”、“John”、“Karen”。
是否有可能在不迭代的情况下得到“1”来返回“John”的索引是多少?
以下工作正常..这个问题我想知道是否有更好的方法
for (String s : names) {
++i;
if (s.equals(someRandomInputString)) {
break;
}
}
【问题讨论】:
-
集合通常没有内部顺序,因此元素的“索引”实际上没有意义——它可能对集合实现有意义,但在一般情况下没有意义。跨度>
-
是否有特定的 Set 实现允许这样做?
-
@Mat LinkedHashSet 是有序的,它做的比他的 Set 合约要求做的要多,所以这个问题很合理
-
你被 Set 卡住是有原因的吗?如果您需要使用索引,显然您应该使用列表。
-
我觉得这很奇怪,这是不可能的。 LinkedHashSet 甚至明确声明元素存储在链表中,为什么没有办法获取索引?