List 是否有一个Java集合,其对象是唯一的(如在集合中),但能够获取某个对象的索引/位置(如在列表中)?
我有一套有序、独特的对象。我目前正在使用树集,以获得正确的顺序。但是,集合不具备获取索引的能力 我当前的实现很好,但不一定是直观的List 是否有一个Java集合,其对象是唯一的(如在集合中),但能够获取某个对象的索引/位置(如在列表中)?,list,set,unique,List,Set,Unique,我有一套有序、独特的对象。我目前正在使用树集,以获得正确的顺序。但是,集合不具备获取索引的能力 我当前的实现很好,但不一定是直观的 TreeSet<T> treeSet = new TreeSet<T>(Comparable c); // Omitted: Add items to treeSet // int index = new ArrayList<T>(treeSet)().indexOf(object); TreeSet-TreeSet=新树集(可
TreeSet<T> treeSet = new TreeSet<T>(Comparable c);
// Omitted: Add items to treeSet //
int index = new ArrayList<T>(treeSet)().indexOf(object);
TreeSet-TreeSet=新树集(可比c);
//省略:将项目添加到树集//
int index=newarraylist(treeSet)().indexOf(object);
有更简单的方法吗?Java没有这样的东西。以下是一些您可以做的建议:
Object[]arrayView=mySet.toArray()代码>然后从中获取元素(这在性能和内存方面有点愚蠢)
import java.util.SortedSet;
import java.util.TreeSet;
class Test {
public static void main(String[] args) {
SortedSet<String> treeSet = new TreeSet<String>();
String first = "index 0";
String second = "index 1";
treeSet.add(first);
treeSet.add(second);
int one = treeSet.headSet(second).size();
System.out.println(one);
// 1
}
}
import java.util.SortedSet;
导入java.util.TreeSet;
课堂测试{
公共静态void main(字符串[]args){
SortedSet treeSet=新treeSet();
String first=“索引0”;
字符串second=“索引1”;
树集。添加(第一);
树集。添加(第二);
int one=树集.耳机(第二个).size();
系统输出打印项次(一);
// 1
}
}
我还面临在树映射中的某个位置查找元素的问题。我用权重增强了树,允许按索引访问元素并在索引处查找元素。
该项目称为索引树映射。在排序映射的索引中查找元素或元素索引的实现不是基于线性迭代,而是基于树二进制搜索。更新树的权重也基于向上爬到树的根部。因此没有线性迭代。这确实有效。不幸的是,它并不比手动遍历树快——Java不缓存子树大小,因此它可能是O(n)而不是O(logn)。