如何在TreeSet中找到元素的索引?

我使用的是a TreeSet<Integer>,我很想在集合中找到数字的索引。有没有一种好的方法可以真正利用二叉树的O(log(n))复杂性?

(如果没有,那我该怎么办,还有谁知道为什么不这样做?我很好奇,为什么这样的类会包含在Java中而没有类似搜索功能的东西。)

回答:

正如@Yrlec指出的,set.headSet(element).size尽管集合中没有此元素,但将返回0。所以我们最好检查一下:

 return set.contains(element)? set.headSet(element).size(): -1;

这是显示问题的测试用例:

public static void main(String args[]){

TreeSet<Integer> set = new TreeSet<>();

set.add(4);

set.add(2);

set.add(3);

set.add(1);

System.out.println(set.headSet(1).size());//0

System.out.println(set.headSet(2).size());//1

System.out.println(set.headSet(3).size());//2

System.out.println(set.headSet(4).size());//3

System.out.println(set.headSet(-1).size());//0!!Caution,returns 0 though it does not exist!

}

以上是 如何在TreeSet中找到元素的索引? 的全部内容, 来源链接: utcz.com/qa/417168.html

回到顶部