21xrx.com
2024-09-20 08:02:31 Friday
登录
文章检索 我的文章 写文章
Java案例:使用集合统计词频生成词云
2023-06-18 16:50:59 深夜i     --     --
Java集合框架 词频统计 词云生成

在本周的Java学习中,我们学习了如何利用Java集合框架实现词频统计,并将结果生成词云。下面是关于这个案例的详细解析。

首先,我们需要将待统计的文本读入到程序中,可以使用Java中的File类和Scanner类来实现:


File file = new File("input_file.txt");

Scanner scanner = new Scanner(file);

然后,我们使用HashMap来存储每个词语出现的次数:


Map wordFreq = new HashMap<>();

while (scanner.hasNext()) {

  String word = scanner.next();

  if (wordFreq.containsKey(word)) {

    wordFreq.put(word, wordFreq.get(word) + 1);

  } else {

    wordFreq.put(word, 1);

  }

}

接着,我们使用JavaFX中的Canvas和GraphicsContext类生成词云,词云的大小和颜色可以根据频率自定义:


Canvas canvas = new Canvas(800, 800);

GraphicsContext gc = canvas.getGraphicsContext2D();

int maxFreq = Collections.max(wordFreq.values());

for (Map.Entry entry : wordFreq.entrySet()) {

  String word = entry.getKey();

  int freq = entry.getValue();

  int size = freq * 30 / maxFreq + 10;

  Color color = Color.rgb(15 * freq % 256, 30 * freq % 256, 45 * freq % 256);

  gc.setFill(color);

  gc.setFont(Font.font("Verdana", FontWeight.BOLD, size));

  gc.fillText(word, Math.random() * 800, Math.random() * 800);

}

最后,我们需要将生成的词云保存为图片文件,可以使用Java中的ImageIO类来实现:


WritableImage image = canvas.snapshot(null, null);

File output = new File("word_cloud.png");

ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", output);

通过这个案例,我们不仅学会了如何使用Java集合实现词频统计和生成词云,也巩固了Java IO和JavaFX的相关知识点。希望本案例能够为Java入门者提供一些参考。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复