Java 使用条件转换HashMap中的流
我对Java8非常陌生。我正在尝试从一个包含showname的流创建一个HashMap。我的问题是,这些名称可能会重复出现多次,这意味着它们必须映射到同一个键上。映射后,我尝试过使用filter,但我不确定要设置什么条件。x->x.equalsx? 流showNames的外观: 洛特,路西法,破坏者,洛特,驱魔者,教父 教父、路西法等Java 使用条件转换HashMap中的流,java,filter,java-8,hashmap,java-stream,Java,Filter,Java 8,Hashmap,Java Stream,我对Java8非常陌生。我正在尝试从一个包含showname的流创建一个HashMap。我的问题是,这些名称可能会重复出现多次,这意味着它们必须映射到同一个键上。映射后,我尝试过使用filter,但我不确定要设置什么条件。x->x.equalsx? 流showNames的外观: 洛特,路西法,破坏者,洛特,驱魔者,教父 教父、路西法等 散列映射的键应为show的名称,值为字符串在流中出现的时间,您需要的是实际分组: Map<String, Long> result = yourLis
散列映射的键应为show的名称,值为字符串在流中出现的时间,您需要的是实际分组:
Map<String, Long> result = yourList.stream()
.collect(Collectors.groupingBy(
Function.identity(),
Collectors.counting()))
您想要的是实际分组:
Map<String, Long> result = yourList.stream()
.collect(Collectors.groupingBy(
Function.identity(),
Collectors.counting()))
你试过使用吗?可能重复的我先映射它,然后想过滤它,但是映射后我不能正确过滤你试过使用吗?可能重复的我先映射它,然后想过滤它,但是映射后我不能过滤correctly@HadiJ .. 字符串在streamuse Collectors.summingite->1而不是Collectors.Counting中出现的次数作为值。请记住,这只是一个HashMap,仅按实现细节显示。理论上,它可以更改为任何其他map实现。因此,如果HashMap是唯一合适的结构,那么您可能需要显式的。@HadiJ这是一个非常微小的性能改进,除非您知道存在瓶颈,否则我不会更改它。除此之外,计数更为惯用,也更易于阅读beginners@HadiJ正是我在评论中说的。。。如果升级到java-9,这个问题已经解决了。我会坚持counting@HadiJ .. 字符串在streamuse Collectors.summingite->1而不是Collectors.Counting中出现的次数作为值。请记住,这只是一个HashMap,仅按实现细节显示。理论上,它可以更改为任何其他map实现。因此,如果HashMap是唯一合适的结构,那么您可能需要显式的。@HadiJ这是一个非常微小的性能改进,除非您知道存在瓶颈,否则我不会更改它。除此之外,计数更为惯用,也更易于阅读beginners@HadiJ正是我在评论中说的。。。如果升级到java-9,这个问题已经解决了。我会坚持数数