如何在java.util.Set中获取项目的索引

我知道Set和List之间的区别(允许唯一与重复,而不是有序/有序等)。我正在寻找的是一个使元素保持有序的集合(这很容易),但是我还需要能够恢复插入元素的索引。因此,如果我插入四个元素,那么我希望能够知道其中一个元素的插入顺序。

MySet<String> set = MySet<String>();

set.add("one");

set.add("two");

set.add("three");

set.add("four");

int index = set.getIndex("two");

因此,在任何给定时刻,我都可以检查是否已添加字符串,并获取该字符串在集合中的索引。是否有这样的事情,或者我需要自己实施?

回答:

类中的一个小型静态自定义方法Util会有所帮助:

 public static int getIndex(Set<? extends Object> set, Object value) {

int result = 0;

for (Object entry:set) {

if (entry.equals(value)) return result;

result++;

}

return -1;

}

如果你需要/想一个类,它 是一个Set,并提供getIndex()方法,我强烈建议实施新的Set和使用Decorator模式:

 public class IndexAwareSet<T> implements Set {

private Set<T> set;

public IndexAwareSet(Set<T> set) {

this.set = set;

}

// ... implement all methods from Set and delegate to the internal Set

public int getIndex(T entry) {

int result = 0;

for (T entry:set) {

if (entry.equals(value)) return result;

result++;

}

return -1;

}

}

以上是 如何在java.util.Set中获取项目的索引 的全部内容, 来源链接: utcz.com/qa/403376.html

回到顶部