gpt4 book ai didi

java - 文件中字符出现的计数/频率分布,包括不可见的字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:02 25 4
gpt4 key购买 nike

我的目标是在大型平面文件(1GB+)中创建每个字符的频率分布,以便以后导入数据库。理想情况下,输出是一个 ASCII 字符列表,每个字符后跟一个计数。

我目前正在使用 HashMap 来创建字符串中每个值的分布,并且它有点有效,我只是不确定如何在大文件上实现它。此外,在我的输出中,CR 和 LF(或/r/n)字符会产生一个新行,并在下一行中计数。

这是当前代码:

public class CharCount{
public static void main(String[] args) {

String s = "abcdefghijklmnopqrstuvwxyz1234567890,.)(/\\<>?!@#$%^&*_-+=\r\n";

char[] arr = s.toCharArray();

HashMap <Character,Integer> count = new HashMap<Character, Integer>();

for (char c : arr) {

try {
count.put(c, count.get(c)+1);
} catch (NullPointerException e) {

count.put(c, 1);
}
}

for (Character c: count.keySet()) {
System.out.println(c + " = " + (int)c + " = " + count.get(c));
}
}
}

理想的输出如下所示:

000 NUL 4124435 001 SOH 0
002 STX 0
003 ETX 0
.....
253 ý 0
254 þ 0
255 ÿ 0

非常感谢任何帮助!

最佳答案

如果您只处理 ASCII 字符,即 0-255 范围内的字符,那么只使用一个整数(或可能是一个长)数组 [256],然后读取文件(实际上一次读取一个字符)会更简单(当然,您可以使用缓冲或 NIO 来提高速度)并增加适当的 bin。

也就是说,您的 HashMap 代码看起来很合理,但我不确定您的问题是什么???

关于java - 文件中字符出现的计数/频率分布,包括不可见的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734770/

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