如何实现纯Java对象缓存

如何实现纯Java对象缓存,java,Java,我正在尝试使用Java训练一个语言模型。这包括读取文件、从文件中提取单词标记,以及获取文件中每个唯一单词标记的频率 我创建了一个Java对象来保存每个单词及其频率,然后将所有单词和频率的对象保存在ArrayList中。在提取密切相关的单词(例如,that,then,ten等)时,我希望首先获得频率最高的单词 到目前为止,我已经实现了上述功能,但是,每个查询都需要我的电脑大约25分钟来执行,因为它必须为每个查询读取文本文件,计算词频,将其保存在ArrayList中,然后在数组中搜索所需的词。我相信

我正在尝试使用Java训练一个语言模型。这包括读取文件、从文件中提取单词标记,以及获取文件中每个唯一单词标记的频率

我创建了一个Java对象来保存每个单词及其频率,然后将所有单词和频率的对象保存在ArrayList中。在提取密切相关的单词(例如,that,then,ten等)时,我希望首先获得频率最高的单词

到目前为止,我已经实现了上述功能,但是,每个查询都需要我的电脑大约25分钟来执行,因为它必须为每个查询读取文本文件,计算词频,将其保存在ArrayList中,然后在数组中搜索所需的词。我相信用单词和相应的频率缓存ArrayList将大大减少我的程序运行所需的时间

但是,我想实现我自己的纯Java对象缓存。我在谷歌上搜索过这一点,但大多数缓存解决方案都参考了第三方实现,我非常希望避免这种情况

有人能帮我提供关于如何创建纯Java对象缓存的详细信息和/或教程以及示例代码吗? 任何其他解决我问题的建议都是非常受欢迎的


谢谢

您的基本方法应该是:

Map<String,Integer> freqs = new HashMap<String,Integer>();


String[] words = inputString.split(" ");
for (String word: words) {
   Integer count =  freqs.get(word);
   if (count == null) {
      freqs.put(1);
   }
   else {
     freqs.put(word,count + 1);
   }
}
Map freqs=newhashmap();
String[]words=inputString.split(“”);
for(字符串字:字){
整数计数=频率获取(字);
如果(计数=null){
频数(1);
}
否则{
频率输入(字,计数+1);
}
}

否则,我肯定会研究第三方库。特别是,如果您使用的是大型集合。

如果改用地图怎么办?那么你的搜索就会快得多如果你在谷歌上找到了第三方的实现,为什么不仔细阅读这些示例代码呢?你在解析多少个文件?25分钟,我的天。再看看这个你可能会发现它有些有用每个文件(通常)包含多少单词,有多少独特的单词?我不明白你所说的“每个问题”是什么意思。想要构成一个“疑问”。为什么每次都要解析文件?为什么不解析它们一次,进行分析,然后将分析结果保存到另一个文件中呢。我认为分析需要很多时间,但这听起来像是可以一次性完成的事情(即静态)。当然,这只是为了指出一种基本方法。例如,为了简化事情,我假设您将整个内容读入一个字符串,但是对于一个大文件,当然最好实现一个以块(例如行)形式读取文件的循环;你的建议帮了大忙。执行速度大大提高了,尽管我现在正在处理一些意想不到的结果。没有什么我不能解决的。。。再次感谢!