标签: treeset

使用二进制搜索从TreeSet返回元素

在TreeSet中有一个名为contains的方法,如果元素在集合中,则返回true.我假设此方法使用二进制搜索,并不按升序迭代所有元素.我对吗?

我有一个TreeSet,它包含一个类的对象,该类使用两个String实例变量来区分它与同一个类的其他对象.我希望能够通过比较两个实例变量(当然使用get方法)和另外两个String变量来创建一个搜索TreeSet的方法,如果它们相等,则返回该元素.如果实例变量小于转到右子树中的第一个元素,或者如果它们在左子树中搜索更大等等.有没有办法做到这一点?

我知道我可以将对象存储在ArrayList中并使用二进制搜索来查找对象,但这不会像搜索TreeSet那么快.

java arraylist binary-search treeset

8
推荐指数
2
解决办法
1万
查看次数

我不能在SortedSet中放置null吗?

我认为这null是允许的Set.
那么为什么以下代码:

SortedSet<Integer> set = new TreeSet<Integer>();  
set.add(null);  
set.add(1);  //--->Line indicated by exception  
Run Code Online (Sandbox Code Playgroud)

给出以下例外?

java 中java.util.TreeMap.put(未知来源)的
java.lang.Integer.compareTo(未知来源)中的
java.lang.Integer.compareTo(未知来源)中的线程"main"java.lang.NullPointerException中的异常. util.TreeSet.add(未知来源)

java collections sortedset treeset

8
推荐指数
2
解决办法
7943
查看次数

Scala的TreeSet与Java的TreeSet - 民意调查?

如果我想删除log(n)Java中的最高条目TreeSet,我会使用treeSet.pollFirst()- Scala mutable.TreeSet类的等价物是什么?

总之,我真正想要的是一个堆状的优先级队列中的数据结构,让我removeMax,addupdatePriority在对数时间.我看了Scala集合库,我很困惑 - 虽然mutable.PriorityQueue让我deque(即removeMax)在对数时间 - 它没有提供更新日志时间的优先级(我必须hackily扫描和删除项目并重新添加线性时间) .同样mutable.TreeSet会让我在对数时间内更新优先级(通过hackily删除和重新添加),但它没有removeMax(即pollFirst)操作.我应该使用什么样的集合容器?请不要将我介绍给外部依赖项.

java scala priority-queue treeset scala-collections

8
推荐指数
1
解决办法
1104
查看次数

如何反转SortedSet的顺序

我想使用以下内容在Map中打印一个有序列表:

Map<Float, String> mylist = new HashMap<>();

mylist.put(10.5, a);
mylist.put(12.3, b);
mylist.put(5.1, c);

SortedSet<Float> orderlist = new TreeSet<Float>(mylist.keySet());

for (Float i : orderlist) {
    System.out.println(i+" "+mylist.get(i));
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印:

5.1 c
10.5 a
12.3 b    
Run Code Online (Sandbox Code Playgroud)

但是如何以相反的顺序打印订单列表,如下所示:

12.3 b
10.5 a
5.1 c
Run Code Online (Sandbox Code Playgroud)

java sortedset treeset

8
推荐指数
3
解决办法
4037
查看次数

为什么scala的TreeSet返回SortedSet

是否有一个原因,对象TreeSet.apply方法返回SortedSet,而不是TreeSet

以下代码不会在scala 2.7中编译

val t:TreeSet[Int] = TreeSet(1,2,3)
Run Code Online (Sandbox Code Playgroud)

scala treeset

7
推荐指数
2
解决办法
1213
查看次数

TreeSet迭代的时间复杂度是多少?

在我的代码中,Java TreeSet迭代是主要的时间因素.在查看系统时,我认为它是O(n)复杂性.任何人都可以验证吗?

我想通过提供从子节点到父节点的向后链接,我可以提高性能.

java algorithm treeset data-structures

7
推荐指数
1
解决办法
4940
查看次数

如何在TreeSet中使用自定义类?

如果我使用Set类似于此:

Set<node> s=new TreeSet<node>();

class node {

  private int x;
  private int y;

}
Run Code Online (Sandbox Code Playgroud)

这是否可以接受,因为它是一个TreeSet,它还会对它进行排序吗?

java treeset

7
推荐指数
2
解决办法
9869
查看次数

如何使用java8流对TreeSet的列表进行排序

我的列表包含类似的集合[1,3,5][2,6,4],大小相同.我试过这样做,但似乎没有用.

List<TreeSet<T>> block;
    for(TreeSet<T> t : block){
        block.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toSet());

    }
Run Code Online (Sandbox Code Playgroud)

我想要的最终结果是[1,2,3][4,5,6].

我可以尝试添加在所有的元素ArrayList和那种出来再做出新ListTreeSet的.但是有一种衬垫吗?

更新:

List<T> list=new ArrayList<T>();
    for(TreeSet<T> t : block){

        for(T t1 : t)
        {
            list.add(t1);   

        }
    }

    list=list.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这有效但可以简化吗?

java treeset java-8 java-stream

7
推荐指数
1
解决办法
661
查看次数

Java中TreeSet方法的计算复杂性

Java中TreeSet方法的计算复杂度是否与AVLTree相同?

具体来说,我想知道以下方法的计算复杂性:1.add 2.remove 3.first 4.last 5. floor 6. higher

用于方法描述的Java Doc:http://docs.oracle.com/javase/6/docs/api/java/util/TreeSet.html

对于AVL树,有所有O(logn)?什么是上述TreeSet方法的复杂性?

java algorithm avl-tree treeset data-structures

6
推荐指数
2
解决办法
5633
查看次数

TreeSet:有效地小于一个值的元素数

我需要一种TreeSet真正快速地计算小于Integers中的X的元素数的方法。

我可以用

  • subSet()
  • 耳机()
  • tailSet()

方法,但它们确实很慢(我只需要计数,而不是数字本身)。有办法吗?

谢谢。


编辑:

我发现了一种变通方法,可以使事情更快!我正在使用BitSet及其cardinality()方法。我首先创建一个BitSet,然后为添加到TreeSet中的每个元素设置BitSet中的相应索引。现在,要计算少于XI的元素数量,请使用:

bitset.get(0,X + 1).cardinality()

与treeset.subSet(0,true,X,true).size()相比,这要快得多。

有人知道为什么吗?我假设BitSet.cardinality()不使用线性搜索。

java count subset treeset

6
推荐指数
1
解决办法
3716
查看次数