Tag: treeset

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:TreeSet命令

使用此代码,我得到此输出: TreeSet t=new TreeSet(); t.add(“test 15”); t.add(“dfd 2”); t.add(“ersfd 20”); t.add(“asdt 10”); Iterator it=t.iterator(); while(it.hasNext()){ System.out.println(it.next); } 我明白了: asdt 10 dfd 2 ersfd 20 test 15 如何根据数字,使用TreeSet获得此类订单? dfd 2 asdt 10 test 15 ersfd 20

Treeset.contains()问题

所以我现在一直在努力解决问题,想想我也可以在这里寻求帮助。 我将Ticket对象添加到TreeSet,Ticket实现Comparable并重写了equals(),hashCode()和CompareTo()方法。 我需要使用contains()检查对象是否已经在TreeSet中。 现在在将2个元素添加到集合之后,它们全部检查得很好,但在添加第三个之后它会搞砸了。 在向TreeSet添加第三个元素后运行这一小段代码,Ticket temp2是我正在检查的对象(verkoopLijst)。 Ticket temp2 = new Ticket(boeking, TicketType.STANDAARD, 1,1); System.out.println(verkoop.getVerkoopLijst().first().hashCode()); System.out.println(temp2.hashCode()); System.out.println(verkoop.getVerkoopLijst().first().equals(temp2)); System.out.println(verkoop.getVerkoopLijst().first().compareTo(temp2)); System.out.println(verkoop.getVerkoopLijst().contains(temp2)); 返回: 22106622 22106622 true 0 false 现在我的问题是如何实现这一点? 编辑: public class Ticket implements Comparable{ private int rijNr, stoelNr; private TicketType ticketType; private Boeking boeking; public Ticket(Boeking boeking, TicketType ticketType, int rijNr, int stoelNr){ //setters } @Override public int […]

我应该为一个非常大的数据集使用`HashSet`或`TreeSet`吗?

我需要在数据结构中存储2到1,500万个帐户(长度为15的String ),以便查找和检查唯一性。 最初我计划将它们存储在HashSet ,但是我怀疑由于哈希冲突导致查找的速度会很慢,并且最终会比TreeMap慢(使用二进制搜索)。 不需要对数据进行排序。 我正在使用Java 7.我有64G系统,48G专用于此应用程序。 这个问题不是HashSet和TreeSet性能测试的重复,因为该问题是关于向Set添加元素的性能,这个问题是关于检查现有Set的重复值的性能。

将HashMap值添加到TreeSet时出错

这是一些示例代码……我似乎总是得到一个ClassCastException …任何人都指出我做错了什么? package com.query; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.junit.Test; import com.google.common.collect.Sets; public class ClassCastExceptionTest { @Test public void test() { A a1 = new A(1); A a2 = new A(2); A a3 = new A(3); Map<String, A> map = new HashMap<String, A>(); map.put(“A1”, a1); map.put(“A2”, a2); […]

我能够在TreeSet中插入重复的条目。 如何克服这一点

我有一个名为Employee的类,它有employeeName和employeeId作为其成员变量。我正在创建新的Employee对象,然后将其添加到TreeSet ,我想根据employeeId对其进行排序。 但我认为如果两个Employee对象具有相同的employeeName则它们是相等的。 设置不允许重复。 但在这里我可以观察到一种奇怪的行为。 这是我的代码。(我这里不使用getter和setter。我直接访问成员变量。) package secondOne; import java.util.Set; import java.util.TreeSet; class Employee implements Comparable { String employeeName; int employeeId; public Employee(String name, int id) { this.employeeName = name; this.employeeId = id; } public int compareTo(Employee emp) { //return this.employeeName.compareTo(emp.employeeName); return (this.employeeId – emp.employeeId); } @Override public String toString() { return (“Name is: ” […]

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

我的列表包含[1,3,5][2,6,4]等集合,大小相同。 我试过这样做,但似乎没有用。 List<TreeSet> block; for(TreeSet t : block){ block.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toSet()); } 我想要的最终结果是[1,2,3][4,5,6] 。 我可以尝试在ArrayList添加所有元素并对其进行排序,然后创建一个新的TreeSet List 。 但是有一种衬垫吗? 更新: List list=new ArrayList(); for(TreeSet t : block){ for(T t1 : t) { list.add(t1); } } list=list.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toList()); 这有效但可以简化吗?

将Java TreeMap代码迁移到Scala?

我正在将我的Java代码库迁移到纯Scala,我仍然坚持使用这一段代码 。 我有一个IntervalMap的实现,即一个数据结构,让你有效地将范围[from,to]映射到set , delete和get操作都是O(log n) (与IntervalTree或SegmentTree略有不同)。 这段代码使用Java的java.util.TreeMaps ,在迁移到Scala时,我遇到了两个大问题: Scala没有mutable.TreeMap – 我决定通过使用mutable.TreeSet (奇怪的是Scala有mutable.TreeSet但没有mutable.TreeMap )来存储密钥并将值存储在辅助的mutable.Map 。 这是一个令人不快的黑客,但还有更好的方法吗? 下一个问题是Scala的mutable.TreeSet没有java.util.TreeSet的ceilingKey , floorEntry , pollFirst , pollLast等同于Java中的所有O(log n)操作。 那么,我怎样才能最好地将我的代码迁移到Scala? 这些情况下的最佳做法是什么? 我真的不想编写自己的树实现。 有没有更惯用的Scala编写IntervalMaps的方式,我不知道? 或者那里有一些有信誉的图书馆? 或者Scala只是简单地使用它的gimped TreeSet和不存在的TreeMaps来吮吸它。 当然,我可以在Scala中使用Java的TreeMap ,但这很难看,我失去了所有不错的Scala集合function,我不妨使用Java。 这是我目前的Java代码: https : //gist.github.com/pathikrit/5574521

将TreeSet转换为ArrayList?

我有一个包含> 100k对象的TreeSet。 我有另一种方法,需要ArrayList作为参数。 有没有办法在不迭代整个TreeSet然后手动将每个对象添加到ArrayList的情况下完成此操作?

在TreeSet上使用迭代器

情况:我有一个自定义对象的TreeSet,我也使用了自定义比较器。 我已经创建了一个在这个TreeSet上使用的迭代器。 TreeSet ts=new TreeSet(); Iterator itr=ts.iterator(); while(itr.hasNext()){ Custom c=itr.next(); //Code to add a new element to the TreeSet ts } 问题:我想知道如果我在while循环中向TreeSet添加一个新元素,那么新元素是否会立即排序。 换句话说,如果我在while循环中添加一个新元素并且它小于我当前在c中保存的元素,那么在下一次迭代中我将获得与上一次迭代中相同的元素吗?(因为在排序之后,新添加的元素将占据当前元素之前的某个位置。