草庐IT

garbage_collector_permanent

全部标签

java - Collectors.toConcurrentMap 和通过 Collectors.toMap 供应商选项将 Map 转换为 ConcurrentHashMap 之间有什么区别?

我想通过Java8Stream和Collector接口(interface)将Map转换为ConcurrentHashMap,然后是我可以使用的两个选项。第一个:Mapmb=persons.stream().collect(Collectors.toMap(p->p.age,p->p.name,(name1,name2)->name1+";"+name2,ConcurrentHashMap::new));第二个:Mapmb1=persons.stream().collect(Collectors.toConcurrentMap(p->p.age,p->p.name));哪个是更好的选择

java - 反转 Collectors.toMap 以添加到 ArrayList

我想将数字的频率放在TreeMap中,以频率作为键,并将具有该频率的数字放在ArrayList中。我有两个问题:1)我在第一个参数中收到“无法从静态上下文引用非静态方法”错误(据我所知,流引用了一个对象-发生了什么?)2)Collectors.toMap()有4个参数——似乎参数4需要用新的TreeMap初始化>,参数2可以是ArrayListadd()函数,参数3可以为null(可能)。这是怎么做到的?importjava.util.*;importjava.util.function.Function;importjava.util.stream.Collectors;public

java - 尽可能在 Collectors 中使用 Characteristics.UNORDERED 重要吗?

因为我经常使用流,其中一些流处理大量数据,所以我认为预先分配一个近似大小的基于集合的收集器是个好主意,以防止昂贵的重新分配作为集合成长。所以我想出了这个,以及其他集合类型的类似方法:publicstaticCollector>toSetSized(intinitialCapacity){returnCollectors.toCollection(()->newHashSet(initialCapacity));}像这样使用SetfooSet=myFooStream.collect(toSetSized(100000));我担心的是Collectors.toSet()的实现设置了Char

java - Collectors.toMap 不编译

这段代码无法编译Listpairs=newArrayList();System.out.println(pairs.stream().collect(Collectors.toMap(x->x.split("=")[0],x->x.split("=")[1])));编译错误是:方法split(String)undefinedobject类型System.out.println(pairs.stream().collect(Collectors.toMap(x->x.split("=")[0],x->x.split("=")[1])错误));但是这个编译的很好Listpairs=newA

java - 为什么 Collectors.toList() 不适用于原始集合?

(这可能与https://stackoverflow.com/a/30312177/160137有关,但恐怕我还是不明白。所以我以这种方式问我的问题,希望它能得到答案我可以更多很容易理解。)通常当我有一个Stream时,我可以使用Collectors类中的静态方法之一将它转换为一个集合:Liststrings=Stream.of("this","is","a","list","of","strings").collect(Collectors.toList());但是,正如其他人所注意到的那样,类似的过程不适用于原始流:IntStream.of(3,1,4,1,5,9).collect

java - Collectors.toList() 中 LongStream VS Stream 的区别

为什么当我使用Collectors.toList()从LongStream获取列表时出现错误,但使用Stream时没有错误?例子:错误:Something.mapToLong(Long::parseLong).collect(Collectors.toList())正确:Something.map(Long::valueOf).collect(Collectors.toList()) 最佳答案 StreamAPI中有四个不同的类:Stream,IntStream,LongStream和DoubleStream.后三个用于处理原始值i

java - 如何在 Java 8 Stream API 中使用 Collectors.grouping 来创建 map

我第一次寻找Java8的StreamAPI。我尝试创建一个过滤器来从Map中删除元素。这是我的map:Mapm=newHashMap();我想删除值)。这是我一直在尝试的:m.entrySet().stream().filter(p->p.getValue()>0).collect(Collectors.groupingBy(s->s.getKey()));我得到一个HashMap>。所以,这不是我想要的。我也试过:m.entrySet().stream().filter(p->p.getValue()>0).collect(Collectors.groupingBy(Map::Ent

java - Java 8 Collector UNORDERED 特性是什么意思?

在官方文档中你可以看到:UNORDEREDIndicatesthatthecollectionoperationdoesnotcommittopreservingtheencounterorderofinputelements.如果没有任何示例,这不是很有帮助。我的问题是,UNORDERED特征到底是什么意思?我应该将它与min或sum等缩减收集器一起使用,还是仅适用于集合收集器?在OpenJDK中,减少操作(min、sum、avg)看起来具有空特征。我希望在那里至少找到CONCURRENT和UNORDERED。 最佳答案 在没有特

java - 使用 JDK 1.6.x G1 ("Garbage First"的经验)

我想知道最新的JDK中G1垃圾回收器的使用体验如何?我看到我的程序中抛出了NullPointerException,尽管代码在早期的JDK中没有改变并且行为正确。 最佳答案 垃圾收集器只会影响应用程序的性能,而不会影响其正确性。我一直将它用于Eclipse,只是为了好玩,而且看起来很稳定。我会在别处寻找异常的来源。 关于java-使用JDK1.6.xG1("GarbageFirst"的经验),我们在StackOverflow上找到一个类似的问题: https:

java.util.stream.Collectors : Why is the summingInt implemented with an array?

标准收集器summingInt在内部创建一个长度为1的数组:publicstaticCollectorsummingInt(ToIntFunctionmapper){returnnewCollectorImpl(()->newint[1],(a,t)->{a[0]+=mapper.applyAsInt(t);},(a,b)->{a[0]+=b[0];returna;},a->a[0],CH_NOID);}我想知道是否可以只定义:privateCollectorsummingInt(ToIntFunctionmapper){returnCollector.of(()->0,(a,t)->