gpt4 book ai didi

java - HashMap 内 HashMap 的平均值

转载 作者:行者123 更新时间:2023-12-01 14:45:20 26 4
gpt4 key购买 nike

我正在尝试从日志文件中查找用户操作之间的时间平均差异。例如,对于用户操作 ua,登录,登录 和下一个用户操作 ua,免责声明确定,我想减去这两个操作之间的时间,并且对于每个操作特定顺序出现的时间,将这些时间加在一起,然后除以该模式出现的次数。

这是我的 HashMap

Map<String, HashMap<String, NumberHolder>> uaCount =
new HashMap<String, HashMap<String, NumberHolder>>();

NumberHolder 定义为

private class NumberHolder
{
public int occurences;
public int sumtime_in_milliseconds;
}

sCurrentLinesNextLine 正如其名称所示。迭代时,sNextLine 变为 sCurrentLine 等等。

在我的代码中,我循环遍历日志文件,打开它们,检查一行是否是用户操作,声明 sCurrentLine 和 sNextLine 并将这两行拆分为隔离用户操作部分。然后,我从这两行中分离出操作的时间和日期,使用简单的日期格式并解析它们,然后找到差异。我想要的输出是ua,login,login --> ua,免责声明,ok AVERAGE = 38秒。如果您想查看整个代码,请询问。

最佳答案

伪代码:

function void addLinePair(string1, string2, deltaTime) {
// Assumes string1 and string2 have been stripped of variable text

keyString = string1 + "|" + string2;

hashValue = findInHashTable(keyString);

if (hashValue == <not found>) {

hashValue = new NumberHolder
insertInHashtable(hashValue, keyString)

}

hashValue.sumtime_in_milliseconds += deltaTime
hashValue.occurrences++
}

function void printAverages {

for (key,value in hashTable) {
string1 = first part of key
string2 = second part of key
average = (float)value.sumtime_in_milliseconds / (float)value.occurrences
print (string1 + " --> " + string2 + ", AVERAGE = " + average + " seconds")
}
}

关于java - HashMap 内 HashMap 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479992/

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