草庐IT

java - 为什么 Java 的 TreeSet<E> remove(Object) 不带 E

来自Java6TreeSet文档:booleanremove(Objecto):Removesthespecifiedelementfromthissetifitispresent.为什么它接受一个对象而不是泛型类型E?唯一可以添加的对象是E类型,因此唯一可移动的类型应该是E类型。 最佳答案 从发布的第一条评论中获取答案:神话:Apopularmythisthatitisstupidandevil,butitwasnecessarybecauseofbackwardcompatibility.Butthecompatibilitya

java - 如何反转 SortedSet 的顺序

我想使用以下方法在Map中打印有序列表:Mapmylist=newHashMap();mylist.put(10.5,a);mylist.put(12.3,b);mylist.put(5.1,c);SortedSetorderlist=newTreeSet(mylist.keySet());for(Floati:orderlist){System.out.println(i+""+mylist.get(i));}上面的代码打印:5.1c10.5a12.3b但是我如何像下面这样以相反的顺序打印订单列表:12.3b10.5a5.1c 最佳答案

java - 对于非常大的数据集,我应该使用 `HashSet` 还是 `TreeSet`?

我需要在数据结构中存储2到1500万个帐户(这是一个长度为15的String),用于查找目的和检查唯一性。最初我计划将它们存储在HashSet中,但我怀疑查找速度会因为哈希冲突而变慢,最终会比TreeMap(使用二分查找)慢。不需要对数据进行排序。我正在使用Java7。我有64G系统,其中48G专用于此应用程序。这个问题不是HashSetandTreeSetperformancetest的重复问题因为这个问题是关于将元素添加到Set的性能,而这个问题是关于检查现有Set的性能重复值。 最佳答案 如果您有48GB的专用内存来存储200

java - 使用二进制搜索从 TreeSet 返回一个元素

在TreeSet中有一个名为contains的方法,如果元素在集合中则返回true。我假设此方法使用二进制搜索并且不会按升序遍历所有元素。我对吗?我有一个TreeSet,它包含一个类的对象,该类使用两个String实例变量将其与同一类的其他对象区分开来。我希望能够创建一种方法,通过将对象的两个实例变量(当然使用get方法)与其他两个String变量进行比较来搜索TreeSet,如果它们相等,则返回该元素。如果实例变量小于转到右子树中的第一个元素,或者如果它们大于左子树中的搜索等。有没有办法做到这一点?我知道我可以只将对象存储在ArrayList中并使用二进制搜索来查找对象,但这不会像只

java - 我不能在 SortedSet 中放入 null 吗?

我认为null可以用于Set。那么为什么会出现下面的代码:SortedSetset=newTreeSet();set.add(null);set.add(1);//--->Lineindicatedbyexception给出以下异常?Exceptioninthread"main"java.lang.NullPointerExceptionatjava.lang.Integer.compareTo(UnknownSource)atjava.lang.Integer.compareTo(UnknownSource)atjava.util.TreeMap.put(UnknownSource)

java - 我如何保持哈希集按字母顺序排列?

我有一个大量对象的集合,这些对象由名称/值对定义。我需要快速访问它们的任何值,并能够按名称的字母顺序返回它们。首先我想我可能会使用HashMap来获得快速访问。但它没有给我任何命令。我决定改用LinkedHashSet。它的问题是我需要能够在列表的正确位置插入新对象,但LinkedHashSet不允许这样做。我还需要能够通过索引和名称访问对象。将感谢任何想法。 最佳答案 为什么不试试TreeSet.您的列表不允许重复吗?如果是这样,那么Set应该没问题。当您添加字符串并且此实现比较器时,该集合将自动为您排序如果你有Sets=newT

java - Java 中 TreeSet 部分 View 的 size() 的复杂性是多少

我想知道对于TreeSet的部分View,size()的时间复杂度是多少。假设我要添加随机数来设置(我不关心口是心非):finalTreeSettree=newTreeSet();finalRandomr=newRandom();finalintN=1000;for(inti=0;i现在我想知道size()调用的复杂性是什么:finalintM=100;for(inti=0;it){System.out.println(tree.subSet(t,f).size());}else{System.out.println(tree.subSet(f,t).size());}}tree.he

java - TreeMap 的 entrySet() 是否返回一个 TreeSet

从TreeMap实例调用的entrySet()函数是否返回条目的TreeSet或只是一组条目。顺序是否得到保证?与其将其作为一组条目获取,不如如何按顺序获取条目列表? 最佳答案 相反:TreeSet在内部使用TreeMap。(参见TreeSetdocs的第一句)我在网上找不到太多可链接到的Sunjava源代码,但这里有一些较旧的版本:TreeSetTreeMap如您所见,TreeMap定义了一个名为TreeMap.EntrySet的内部类。它只是扩展了AbstractSet。不,它没有实现SortedSet(否则可能由SortedM

java - 使用 TreeSet 计算磁盘交叉点

在我将真实测试作为工作申请的一部分之前,我正在尝试Codility的演示问题。他们的其中一个演示是一个涉及计算磁盘阵列的磁盘交叉点数量的问题。任务描述是GivenanarrayAofNintegers,wedrawNdiscsina2DplanesuchthattheI-thdisciscenteredon(0,I)andhasaradiusofA[I].WesaythattheJ-thdiscandK-thdiscintersectifJ≠KandJ-thandK-thdiscshaveatleastonecommonpoint.Writeafunction:classSolutio

java - Treeset.contains() 问题

所以我已经为一个问题苦苦挣扎了一段时间,我想我不妨在这里寻求帮助。我正在将Ticket对象添加到TreeSet,Ticket实现Comparable并覆盖了equals()、hashCode()和CompareTo()方法。我需要使用contains()检查对象是否已经在TreeSet中。现在,在向集合中添加2个元素后,一切正常,但在添加第三个元素后,它变得一团糟。在将第三个元素添加到TreeSet后运行这段代码,Tickettemp2是我正在检查的对象(verkoopLijst)。Tickettemp2=newTicket(boeking,TicketType.STANDAARD,1