草庐IT

parallel-collections

全部标签

java - Java Collections Framework 中常用方法(大小)的意外复杂性?

最近,我对某些Java集合没有方法size()的常量时间操作感到惊讶。虽然我了解到集合的并发实现会做出一些妥协,作为并发增益的权衡(ConcurrentLinkedQueue、ConcurrentSkipListSet、LinkedTransferQueue等中的大小为O(n)),但好消息是API文档中对此进行了适当记录。我关心的是方法大小对某些集合方法返回的View的性能。例如,TreeSet.tailSet返回其元素大于或等于fromElement的支持集部分的View。令我非常惊讶的是,对返回的SortedSet调用大小在时间上是线性的,即O(n)。至少这是我设法从OpenJDK

java - hibernate/GORM : collection was not processed by flush()

我的Grails应用程序中有一个集成测试,当我尝试保存Member类型的实体时失败了invitingMember.save(flush:true)这引发了以下异常org.hibernate.AssertionFailure:collection[com.mycompany.facet.Facet.channels]wasnotprocessedbyflush()atcom.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)在事务的早期,我将一个对象

java - 如何调试 "Found two representations of same collection"?

我找到了severalquestionsabout这个,但没有一个完整的问题解释,以及如何调试它-答案都是轶事。问题是在Play1.2.4JPA测试中,当我save()一个模型时出现这个异常:org.hibernate.HibernateException:Foundtworepresentationsofsamecollection:models.Position.projects我想知道:是否有与Play无关的关于此问题的一般文档?问题出在hibernate状态,但很多关于此问题的Google结果都在Play应用程序中。有哪些基本的最佳做法可以避免此问题?它是由Play引起的吗?或

Java Stream对象并行处理方法parallel()

        Stream.parallel()方法是Java8中StreamAPI提供的一种并行处理方式。在处理大量数据或者耗时操作时,使用Stream.parallel()方法可以充分利用多核CPU的优势,提高程序的性能。本文将从以下几个方面对Stream.parallel()进行详解。什么是Stream.parallel()方法        Stream.parallel()方法是将串行流转化为并行流的方法。通过该方法可以将大量数据划分为多个子任务交由多个线程并行处理,最终将各个子任务的计算结果合并得到最终结果。使用Stream.parallel()可以简化多线程编程,减少开发难度。

java - 为什么Map不扩展Collection接口(interface)

这个问题在这里已经有了答案:Whydoesn'tJavaMapextendCollection?(9个回答)关闭8年前。为什么java.util.Map接口(interface)不扩展java.util.Collection接口(interface)?java.util.Map不是键值对的集合吗?

java - commons-collections 和 commons-beanutils 中的重复类

Apache的两个MavenArtifact中有四个重复类:commons-beanutils:commons-beanutils:1.8.3和commons-collections:commons-collections:3.2.1:org.apache.commons.collections.ArrayStackorg.apache.commons.collections.Bufferorg.apache.commons.collections.BufferUnderflowExceptionorg.apache.commons.collections.FastHashMap是否可

java - 如何在 Java 中并发处理 Collection 中的元素

我需要同时处理某些Collection实例中的元素。换句话说,不是迭代Collection实例for(Someclasselem:coll){process(elem);}我想同时处理这些元素。比如,像ConcurrentCollectionExecutor(coll,newCallable{...},numberOfThreads)这样的东西。此外,应修复多个并发线程。任何灵活的模式已经存在? 最佳答案 在名为MyRunnable的类中将process方法设为run()方法,该类实现了Runnable并且其构造函数将elem作为输

java - Map.of() 与 Collections.emptyMap()

Map.of()和Collections.emptyMap(),List.of()和有区别吗>Collections.emptyList()和Set.of()和Collections.emptySet()之间? 最佳答案 是,emptyXyz返回的集合之间甚至存在行为差异,而不仅仅是技术差异。Collections中的工厂方法类和新ofJDK9的接口(interface)(Map、List、Set)中引入的工厂方法,如果它们是在没有参数的情况下调用的。相关区别在于新的of返回的集合工厂方法不允许null键和值(如API文档中的Lis

java - 为什么 Collections.shuffle() 算法比我的实现效果更好

这个问题在这里已经有了答案:Whyisthisshufflingalgorithmwrong?(1个回答)关闭7年前。Collections.shuffle()向后遍历Collection的每个索引,然后将其与包含或之前的随机索引交换。我想知道为什么,所以我尝试做同样的事情,但交换Collection中的any随机索引。这是Collections.shuffle()代码的洗牌部分:for(inti=size;i>1;i--)swap(arr,i-1,rnd.nextInt(i));这是我的算法:Randomr=newRandom();for(inti=0;i当我在同一个ArrayLis

java - 注释 ConcurrentHashMap 时处于 hibernate 状态的 "Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements"

我试过注释一个属性访问器,其返回值是一个映射,如下所示:@MapKeyColumn(name="parameter_name")@ElementCollectionpublicConcurrentHashMapgetParameterValues()这符合hibernate用户指南(第2.2.5.3.4节)。但是,我得到:org.hibernate.AnnotationException:Illegalattempttomapanoncollectionasa@OneToMany,@ManyToManyor@CollectionOfElements:ConfigurationParam