草庐IT

Set集合

全部标签

Java 收集 `set` 的分组和映射,但如果所有值都是 `null` 则需要一个空集

在我的Java11应用程序中,我想从存储库获取产品更新。一个产品更新有一个updateId和一个要更新的productIds列表。如果没有应该更新的产品编号以使用updateId=X更新,我仍然想写入另一个表,我已经处理了更新X;updateStatusRepository.setStatusProcessing(updateId)和updateStatusRepository.setStatusProcessed(updateId)仍应为此updateId调用。如果存在产品更新,它们应该在ProductProcessingService中进行处理。现在,groupingBy和mapp

java - 将 Set<String> 中的所有值分配给带有流的 Map<String, String>

我有一个包含不同字符串的列表1,这些字符串以另一个列表(fooBarList)中的字符串开头。Listlist1=Arrays.asList("FOO1234","FOO1111","BAR1","BARRRRR");ListfooBarList=Array.asList("FOO","BAR");我想创建一个Hashmap>hm它根据字符串的开头将字符串与list1分开。结果应该是这样的:{FOO=["FOO1234",FOO1111"],BAR=["BAR1","BARRRRR"]}fooBarList定义了不同的键。如何在流的帮助下实现这一目标?我只是不知道如何执行我基本上说的步

java - 如何克隆同步集合?

想象一个同步集合:Sets=Collections.synchronizedSet(newHashSet())克隆此集合的最佳方法是什么?最好克隆不需要对原始集合进行任何同步,但要求对克隆集合进行迭代不需要对原始集合进行任何同步。 最佳答案 在同步块(synchronizedblock)中使用复制构造函数:synchronized(s){SetnewSet=newHashSet(s);//preferablyusegenerics}如果您还需要同步副本,请再次使用Collections.synchronizedSet(..)。根据P

java - 从 Java Set 中获取一个项目

我有一个Set昂贵的对象。这些对象有ID,equals使用这些ID来实现相等。这些对象的类型有两个构造函数;一种用于昂贵的对象,一种用于设置ID。因此我可以使用Set.contains(newObject(ID))检查特定ID是否在Set中。但是,在确定对象在集合中之后,我无法获取集合中的对象实例。我怎样才能得到集合中包含的确切对象? 最佳答案 考虑使用UnifiedSet在EclipseCollections中上课.它实现了Pool除了Set之外的接口(interface)。Pool为put和get添加了类似于Map的API。Po

java - 如何制作由 map 支持的集合?

Collections中有一个方法类。SetCollections.newSetFromMap()支持map和map支持的集合是什么意思? 最佳答案 也许看看实现会很有启发性:privatestaticclassSetFromMapextendsAbstractSetimplementsSet,Serializable{privatefinalMapm;//ThebackingmapprivatetransientSets;//ItskeySetSetFromMap(Mapmap){if(!map.isEmpty())throwne

java - 断言集合包含自定义类的对象,它不会覆盖 equals/hashcode

我们有一个包含多个字段的自定义类,出于业务领域的原因,我们不能为此重写equals/hashcode方法然而,在单元测试期间,我们应该断言集合是否包含此类的项目ListcustomObjectList=classUnderTest.methodUnderTest();//createcustomObjectwithfieldssettotheverysamevaluesasoneoftheelementsincustomObjectList//weshouldassertherethatcustomObjectListcontainscustomObject但是,到目前为止,我们还没有

java - 字符串数组到整数的集合?

转换String[]的简单方法是什么?到Collection?这就是我现在正在做的,但不确定它是否好:String[]myStringNumbers;Arrays.stream(Arrays.asList(myStringNumbers).stream().mapToInt(Integer::parseInt).toArray()).boxed().collect(Collectors.toList()); 最佳答案 您不需要制作中间数组。只需解析和收集(使用Collectors.toList的静态导入):Arrays.stream

java - 当原始 map 包含集合作为值时,如何创建反向 map ?

假设我的原始Map包含以下内容:Map>original=Maps.newHashMap();original.put("Scott",Sets.newHashSet("Apple","Pear","Banana");original.put("Jack",Sets.newHashSet("Banana","Apple","Orange");我想创建一个包含以下内容的反向Map:"Apple":["Scott","Jack"]"Pear":["Scott"]"Banana":["Scott","Jack"]"Orange":["Jack"]我知道它可以用旧的方式(Java8之前的版本)

java - 是否有处理重复项的排序 java 集合?

我需要一个行为类似于C++multimap的集合,但我还需要能够通过一系列键获取元素。 最佳答案 你可以看看GoogleCollections.它有多个MultiMap的实现。 关于java-是否有处理重复项的排序java集合?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2658356/

java - 在显示进度的同时对大型集合进行排序

在更新进度条时对集合进行排序的最佳方法是什么?目前我有这样的代码:for(inti=0;i这会显示进度,但随着sortedItems中的项目数量增加,进度条会变慢。有没有人有更好的方法?理想情况下,我想使用类似于Collections.sort()的接口(interface),以便尝试不同的排序算法。任何帮助都会很棒!作为背景,这段代码从Lucene中提取大量文档(1-1000万)并在它们之上运行自定义比较器。通过将数据写回磁盘来对它们进行排序太慢而不实用。大部分成本是从磁盘读取项目,然后在项目上运行比较器。我的PC有大量内存,因此不存在与交换到磁盘等相关的问题。最后我选择了Steph