我知道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会有所帮助:
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模式:
Set
getIndex()
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; } }