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 implements Set {
private Set set;
public IndexAwareSet(Set 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;
}
}