当前位置: 首页 > 知识库问答 >
问题:

Java8流API中的简单解析器

裴欣然
2023-03-14

我有一颗豆子和一条小溪

public class TokenBag {
    private String token;
    private int count;
    // Standard constructor and getters here
}
Stream<String> src = Stream.of("a", "a", "a", "b", "b", "a", "a");

并且希望对返回TokenBag的另一个对象流的流应用一些中间操作。在这个例子中必须有两个:("a",3),("b",3)和("a",2)。

请把它看作一个非常简单的例子。在现实中,会有比仅仅计算一行中相同的值更复杂的逻辑。事实上,我试图设计一个简单的解析器,它接受一个令牌流并返回一个对象流。

另外,请注意,它必须保持为一个流(没有中间累加),而且在本例中,它必须在一行中真正计算相同的值(不同于分组)。

感谢您对本任务解决方案的一般方法提出建议。

共有3个答案

东方嘉佑
2023-03-14

首先将其分组到Map,然后将条目映射到TokenBag:

Map<String, Long> values = src.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
List<TokenBag> tokenBags = values.entrySet().stream().map(entry -> {
    TokenBag tb = new TokenBag();
    tb.setToken(entry.getKey());
    tb.setCount(entry.getValue().intValue());
    return tb;
}).collect(Collectors.toList());
董建德
2023-03-14
    Stream<String> src = Stream.of("a", "a", "a", "a", "b", "b", "b");

// collect to map 
    Map<String, Long> counted = src
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

// collect to list 
    List<TokenBag> tokenBags = counted.entrySet().stream().map(m -> new TokenBag(m.getKey(), m.getValue().intValue()))
            .collect(Collectors.toList());
邓兴为
2023-03-14
Map<String, Long> result = src.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);

这将提供所需的输出

a=4, b=3

然后你可以继续在地图上迭代,创建TokenBag的对象。

 类似资料:
  • 本文向大家介绍简单解析PHP程序的运行流程,包括了简单解析PHP程序的运行流程的使用技巧和注意事项,需要的朋友参考一下 一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于服务器端编程,如何被运行。也看过一些PHP的教程,大多是介绍语法,却没有给出前面的问题解答。最近东拼西凑的看了一些东西,终于对PHP如何运行

  • 使用iphoneSDK官方NSXMLParserDelegate做的简单xml解析,附带详细注释以及使用到的方法的详细解释,非常适合新手参考。 [Code4App.com]

  • 问题内容: 我正在尝试解析WSDL以获取操作,端点和示例有效负载。用户输入的WSDL。我找不到执行此操作的教程。 我只能找到那些生成不需要的源代码的代码。我尝试使用XBeans,但显然我需要Saxon。没有撒克逊人,有没有简单的轻巧的方法来做到这一点? 例如 应该进行操作:GetLastTradePrice,GetLastTradePrice 端点:StockQuotePort 有效负载样本: 这

  • 本文向大家介绍简单解析Django框架中的表单验证,包括了简单解析Django框架中的表单验证的使用技巧和注意事项,需要的朋友参考一下 我们的搜索示例仍然相当地简单,特别从数据验证方面来讲;我们仅仅只验证搜索关键值是否为空。 然后许多HTML表单包含着比检测值是否为空更为复杂的验证。 我们都有在网站上见过类似以下的错误提示信息:     请输入一个有效的email地址, foo' 并不是一个有效的

  • 我正在寻找一个简单的JavaScript节流阀。我知道像lodash和下划线这样的库都有它,但只有一个函数包含这些库中的任何一个都是多余的。 我还检查了jQuery是否有类似的函数-找不到。 我发现了一个工作油门,下面是代码: 这样做的问题是:在油门时间完成后,它会再次触发该功能。所以让我们假设我做了一个油门,每10秒在键盘上按下一次——如果我按下2次键盘,当10秒完成时,它仍然会按下第二个键盘。

  • 本文向大家介绍Java8中的类型注解浅析,包括了Java8中的类型注解浅析的使用技巧和注意事项,需要的朋友参考一下 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷? 一、什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;java 8里面,注解