gpt4 book ai didi

Java8 - 用于多个搜索条件的嵌套数据结构

转载 作者:行者123 更新时间:2023-11-30 01:59:22 24 4
gpt4 key购买 nike

我正在尝试为以下信息创建一个数据结构,其中应该有 <1000 次出现(不过可扩展性会非常好):

  • 时间
  • 服务器
  • 统计
  • 总计

我可以在哪里进行查询,例如:

  1. SERVERSTATTOTAL 是多少
  2. STATSERVERTOTAL 是多少

我的第一个猜测(真的很难看)是一个类似于的嵌套 HashMap

HashMap<Long, HashMap<String, HashMap<String, Integer>>

实现上述内容的最佳方法是什么?我是否错过了大局,应该重新设计我存储数据的方式?

编辑:示例用例如下所示:

Time  | Stat   | Server  | Platform | Count
11:00 | Logins | Server1 | Android | 10
11:00 | Logins | Server2 | IOS | 5
12:00 | ERRORS | Server14| IOS | 8

最佳答案

为什么不简单地将各个项目存储在一个对象中,例如 DataPoint其中有 time , type (例如 login )和 platform

然后对它们进行相应的分组。如果它们在内存中,您甚至可以使用 StreamgroupingBy Collector并做counting()计算每组的所有出现次数。

如果你有List<DataPoint> list你可以这样做:

Map<String, Long> countsByType = list.stream()
.collect(Collectors.groupingBy(DataPoint::getType, Collectors.counting()));


Map<String, Long> countsByPlatform = list.stream()
.collect(Collectors.groupingBy(DataPoint::getPlatform, Collectors.counting()));

我不确定 Long 到底如何时间进入故事,但如果您想按小时或类似的方式对它们进行分组,您可以在上述操作之前再次执行相同的操作。

如果DataPoint将已经包含聚合,例如 total ,您可以替换 Collectors.counting()Collectors.summingInt(DataPoint::getTotal)或类似Collectors.summingLong()如果值可能变得非常大。

关于Java8 - 用于多个搜索条件的嵌套数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53396216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com