草庐IT

COLLECTION

全部标签

java - 从集合中获取随机元素

我有一个Collection我如何获得随机Obj从中?我检查了docs而且似乎没有办法,因为迭代器是访问集合的唯一方法。我是否必须对其进行迭代以获得随机对象!? 最佳答案 使用Lambda,您可以非常快速地完成此操作并处理Collection为空的情况。publicstaticOptionalgetRandom(Collectione){returne.stream().skip((int)(e.size()*Math.random())).findFirst();} 关于java-从集

java - 使用 openEntityManagerInView 仍然得到 "failed to lazily initialize a collection of role"

我试图将我的一个实体返回到JSP页面,但收到以下错误“无法延迟初始化角色集合”。我已经添加了openEntityManagerInView过滤器(假设它允许实体管理器在View中保持打开状态?)但仍然出现此错误。我的应用程序是使用没有xml的javaconfig配置的。下面是我的调度程序servelet。你可以看到我已经添加了openEntityManagerInView过滤器。知道这是为什么吗?我在stackoverflow上检查过类似的问题,但没有找到所提供的解决方案。publicclassDispatcherServletInitializerextendsAbstractAnn

java - ArrayList 在 Java Collection Framework 内部是如何表示的?

我正在听RobertSedgewick在Coursera上的算法讲座。当Robert先生指出不能将泛型与数组一起使用时,我有点困惑,因为这是不允许的。但是CollectionFramework中的ArrayList在内部使用Arrays并且允许使用Generic数据类型。我的意思是说我们可以执行以下操作:ArrayListlist=newArrayList();他指出的一个hack是这样的:publicclassFixedCapacityStack{privateItem[]s;privateintN=0;publicFixedCapacityStack(intcapacity){s=

java - 我可以使用 Collection.size() 来替换这段代码中的计数器吗?

代码如下:publicclassLogService{privatefinalBlockingQueuequeue;privatefinalLoggerThreadloggerThread;privatefinalPrintWriterwriter;@GuardedBy("this")privatebooleanisShutdown;@GuardedBy("this")privateintreservations;//这是JavaConcurrencyinPractice一书的片段,我在想也许计数器reservations是不必要的,因为我们可以简单地使用queue.size()获取q

java - 为什么这么多方法使用 Collection 而不是 Iterable?

有了C#,我逐渐爱上了IEnumerable界面。在很多情况下,这就是您想要提供和接受的全部内容。此外,它在.Net库中也很有用。例如,您在List上有一个构造函数需要IEnumerable的类(class).我现在必须使用Java,自然想使用等效的Iterable界面。但是,似乎我真的不能在任何地方使用它。一切似乎都在使用扩展的Collection接口(interface)代替。为什么是这样?例如,您有ArrayList采用Collection的构造函数:Constructsalistcontainingtheelementsofthespecifiedcollection,inth

java - collection.stream().skip().findFirst()的效率

假设set是一个包含n元素的HashSet而k是一些int在0(含)和n(不含)之间。有人可以简单地解释一下当您这样做时实际发生了什么吗?set.stream().skip(k).findFirst();具体来说,这个的时间复杂度是多少?将spliterator()添加到Collection接口(interface)是否意味着我们现在可以比Java7更快地访问集合的“随机”元素? 最佳答案 当前的实现复杂度为O(k),更等同于:Iteratorit=set.iterator();for(inti=0;i当前的实现从不考虑顺序流的OR

HashSet 或其他实现的 Java 变量类型集合?

我经常看到类似Listlist=newArrayList();的声明或Setset=newHashSet();对于类中的字段。对我来说,使用变量类型的接口(interface)来提供实现的灵active是非常有意义的。上面的例子仍然定义了哪种Collection必须分别使用s,分别允许哪些操作以及在某些情况下它应该如何表现(由于文档)。现在考虑实际上只有Collection的功能的情况。(甚至Iterable)接口(interface)需要使用类中的字段和Collection的种类实际上并不重要,或者我不想过度指定它。所以我选择例如HashSet作为实现并将该字段声明为Collecti

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 - 策略设计模式、泛型和类型安全

我想结合工厂创建以下策略模式,但我希望它是类型安全的。到目前为止,我已经完成了以下工作:publicinterfaceParser{publicCollectionparse(ResultSetresultSet);}publicclassAParserimplementsParser{@OverridepublicCollectionparse(ResultSetresultSet){//performparsing,getcollectionCollectioncl=performParsing(resultSet);//localprivatemethodreturncl;}}p

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