草庐IT

generic-collections

全部标签

java - java.util.Collections.contains() 如何比线性搜索执行得更快?

我一直在胡思乱想各种搜索集合、集合的集合等的不同方法。做了很多愚蠢的小测试来验证我的理解。这是让我感到困惑的一个(源代码在下面)。简而言之,我正在生成N个随机整数并将它们添加到列表中。该列表未排序。然后,我使用Collections.contains()在列表中查找值。我有意寻找一个我知道不会存在的值,因为我想确保整个列表空间都被探测到。我为这次搜索计时。然后我手动进行另一个线性搜索,遍历列表的每个元素并检查它是否与我的目标匹配。我也为这次搜索计时。平均而言,第二次搜索比第一次搜索花费的时间长33%。按照我的逻辑,第一次搜索也必须是线性的,因为列表是未排序的。我能想到的唯一可能性(我立

java - 为什么 Collections.sort() 针对 LinkedList 进行了优化,而没有针对 ArrayList 进行优化?

为什么Collections.sort()创建一个额外的对象数组并对数组执行Tim排序,最后将排序后的数组复制回List对象?我知道此调用针对LinkedList进行了优化,但我们不会损失ArrayList的性能吗?我们本可以避免2n次将其转换为对象数组并将它们添加回列表的操作。我知道这些额外的操作不会影响整个排序操作的Big-O,但我相信它可以针对ArrayList进一步优化。我是不是漏掉了什么?我只是想了解为什么架构是这样布局的。谢谢。https://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/clas

java - 使用来自 java 的 scala.collection.immutable.Set 的示例

有没有熟悉Scala的人知道我如何使用scala.collection.immutable.Set来自java?我可以模糊地阅读scaladoc,但我不确定如何从java中调用像“-”这样的scala方法(我假设我只需要在我的类路径中包含一些scala.jar文件......?) 最佳答案 Scala将这些特殊符号写为$plus、$minus等。您可以通过针对scala.collection.immutable.HashSet运行javap来亲眼看到这一点。这允许您执行如下代码:Sets=newHashSet();s.$plus("

java 泛型 : getting class of a class with generic parameters

我很好奇这个怎么实现Class>food=Map.class;这显然行不通。我想要这样的东西Class>food=Map.class;但这似乎不是有效的java语法。如何让这个工作?编辑:我想要这个的原因是因为我有这样的方法protectedConfigValuegetSectionConfig(Stringname,ClassconfigType){returnconfig.getConfig(name);}我想这样调用它ConfigValue>config=getSectionConfig("blah",Map.class>);Mapval=config.value();

Java 8 : Lambda Function and Generic Wildcards

我有以下类(class)classBookimplementBorrowable{@OverridepublicStringtoString(Functionformat){returnformat.apply(this);}}这给了我一个错误,我不能在这个(书籍对象)上使用“应用”。我当前的格式化程序是FunctionREGULAR_FORMAT=book->"name='"+book.name+'\''+",author='"+book.author+'\''+",year="+book.year;我不想制作该类型的lambda函数Function因为我将无法访问未被Borrowa

java - 在 java.util.Collection 和 java.lang.Iterable 中声明的方法 iterator(),它的超接口(interface)?

有人可以向我解释为什么方法是Iteratoriterator();吗?在java.util.Collection中定义?Collection已经扩展java.lang.Iterable;这种方法是多余的。这是为了方便吗? 最佳答案 CollectioninterfaceJava1.2中引入了CollectionsAPI。iterator方法出现了。然而,Iterableinterface直到Java1.5才被引入。Collection显式定义iterator的原因是因为它早于Iterable。Collection返回Iterator

c# - 列表接口(interface) : from Java to C#

我是一名Java程序员,最近在学习C#。通常在Java中使用列表时,最好针对其接口(interface)进行编程以便在实现之间切换:Listlist=newArrayList();//orlist=newLinkedList();C#呢?是否存在类似的方法?有人可以给我举个例子吗?从现在开始,我正在以这种方式构建一个列表,但我不认为List是一个接口(interface):Listlist=newList();list.Add(2); 最佳答案 在.NET中,最好使用层次结构中尽可能高的对象。你可以使用IList接口(interfa

java - Collections.nCopies 不创建列表副本

我已经创建了一个List的列表,并设置了默认大小。因此,我使用set方法将数据添加到列表中。我的代码:packagetest;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;publicclassTest2{publicstaticvoidmain(Stringargs[]){List>keys=newArrayList(Collections.nCopies(3,newArrayList()));Listvalues=keys.get(2);values.add("Hello");v

java - 为什么 Java Collections API 不包含图形实现?

我目前正在学习JavaCollectionsAPI并且觉得我对基础知识有很好的理解,但我一直不明白为什么这个标准API不包含图形实现。三个基类(List、Set和Map)很容易理解,它们在API中的所有实现都非常简单和一致。考虑到图形作为给定问题建模的潜在方法出现的频率,这对我来说没有意义(它可能确实存在于API中,当然我没有在正确的地方寻找).SteveYegge在他的一篇博文中建议,程序员在解决问题时应该首先考虑图,如果问题域不适合这种数据结构,那么才考虑替代结构。我的第一个猜测是没有通用的方式来表示图形,或者它们的接口(interface)可能不够通用,以至于API实现无法发挥作

Java + Count 从 int 数组中复制而不使用任何 Collection 或另一个中间数组

作为Java面试试卷的一部分,我有以下问题需要解决。但是我有点想知道如果没有任何Collection或中间Array,我如何实现它。问题:-在不使用任何集合或其他中间数组的情况下从int数组中计算重复项Inputvalues:-{7,2,6,1,4,7,4,5,4,7,7,3,1}Output:-Numberofduplicatesvalues:3Duplicatesvalues:7,4,1我已经实现了以下解决方案,但还没有完成。有人知道吗?谢谢。publicstaticvoidduplicate(intnumbers[]){for(inti=0;i 最佳答