Java-计算两个文档中的单词数

Java-计算两个文档中的单词数,java,data-structures,Java,Data Structures,3-现在我必须看看当前文件中是否有来自上述术语的单词,如果是,我将计数 现在这是我的问题,我在第3步上结巴了: 我知道如何使用TreeMap TreeMap.containskey等计算单词数,但每个文件都是全局计数而不是本地计数: 任何伪代码?一种可能是每个文件有一个映射,例如再次存储在映射中。一种可能是每个文件有一个映射,例如再次存储在映射中。我不清楚,但我假设你的两份文件是指文件A,其中包含你不感兴趣的所有可能术语,以及文件B,其中包含你感兴趣的部分或全部术语,前提是它们也出现在文件A中

3-现在我必须看看当前文件中是否有来自上述术语的单词,如果是,我将计数

现在这是我的问题,我在第3步上结巴了:

我知道如何使用TreeMap TreeMap.containskey等计算单词数,但每个文件都是全局计数而不是本地计数:


任何伪代码?

一种可能是每个文件有一个映射,例如再次存储在映射中。

一种可能是每个文件有一个映射,例如再次存储在映射中。

我不清楚,但我假设你的两份文件是指文件A,其中包含你不感兴趣的所有可能术语,以及文件B,其中包含你感兴趣的部分或全部术语,前提是它们也出现在文件A中

我不确定这是否是你想要的,但从你提问的措辞来看,这是我最好的猜测

如果希望字符串是单词,整数是出现次数,那么最终结果可以是一个映射树映射

因此,您首先要阅读文档A并绘制地图。putword,0;每一个字。每个重复的单词将替换地图中的现有条目。您可以先测试是否存在,但我认为这不会对性能造成太大影响

现在,您已经完成了步骤1和步骤2

现在,您需要通读您的文档B,每个单词:

检查它是否存在于地图中 如果存在,则增加该值 ie:如果map.containsKeyword map.putword、map.getword+1

现在您已经完成了步骤3,并且有一个只包含文档a中包含的单词的映射,以及它们在文档B中的出现次数

如果我误解了你的要求,我相信你可以调整它以适应

编辑

如果只想计算一个文档中的单词数,则伪代码为:

for (word)
    if (map.containsKey(word))
        map.put(word, map.get(word) + 1)
    else
        map.put(word, 1)
也就是说,你打到的每一个字都会增加一个。如果这个词在你用一个词在地图上初始化之前没有被击中


在这个过程结束时,您有一个地图,其中包含文档中的每个单词及其出现次数。

我不清楚,但我假设您的两个文档指的是文档a,其中包含您不感兴趣的所有可能术语出现次数,以及文件B,其中包含您对发生次数感兴趣的部分或全部术语,前提是它们也出现在文件A中

我不确定这是否是你想要的,但从你提问的措辞来看,这是我最好的猜测

如果希望字符串是单词,整数是出现次数,那么最终结果可以是一个映射树映射

因此,您首先要阅读文档A并绘制地图。putword,0;每一个字。每个重复的单词将替换地图中的现有条目。您可以先测试是否存在,但我认为这不会对性能造成太大影响

现在,您已经完成了步骤1和步骤2

现在,您需要通读您的文档B,每个单词:

检查它是否存在于地图中 如果存在,则增加该值 ie:如果map.containsKeyword map.putword、map.getword+1

现在您已经完成了步骤3,并且有一个只包含文档a中包含的单词的映射,以及它们在文档B中的出现次数

如果我误解了你的要求,我相信你可以调整它以适应

编辑

如果只想计算一个文档中的单词数,则伪代码为:

for (word)
    if (map.containsKey(word))
        map.put(word, map.get(word) + 1)
    else
        map.put(word, 1)
也就是说,你打到的每一个字都会增加一个。如果这个词在你用一个词在地图上初始化之前没有被击中


在这个过程的最后,你有一张地图,包含文档中的每个单词及其出现次数。

他在这个主题中问了一些同样的问题:

假设每行有一个单词,并且文件的最后一行包含-1以中断循环

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class StackOverflow {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Map<String, Integer> countedWords = new HashMap<String, Integer>();
    int numberOfWords = 0;
    String word = "";
    while (true) {
        word = scanner.nextLine();
        if (word.equalsIgnoreCase("-1")) {
            break;
        }
        if (countedWords.containsKey(word)) {
            numberOfWords = countedWords.get(word);
            countedWords.put(word, ++numberOfWords);
        } else {
            countedWords.put(word, 1);
        }
    }
    Iterator it = countedWords.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
    }
}
}

在这个话题上,他问了同样的问题:

假设每行有一个单词,并且文件的最后一行包含-1以中断循环

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class StackOverflow {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Map<String, Integer> countedWords = new HashMap<String, Integer>();
    int numberOfWords = 0;
    String word = "";
    while (true) {
        word = scanner.nextLine();
        if (word.equalsIgnoreCase("-1")) {
            break;
        }
        if (countedWords.containsKey(word)) {
            numberOfWords = countedWords.get(word);
            countedWords.put(word, ++numberOfWords);
        } else {
            countedWords.put(word, 1);
        }
    }
    Iterator it = countedWords.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
    }
}
}

谢谢你差点回答了我的问题:。我有50多份文件,我理解你的前两个步骤——它们非常简单明了。我听不懂你的第三步,你能再解释一下吗?如何计算每个文件的字数?我需要做两个循环吗?第一个将运行所有术语,第二个将检查每个文件中的特定单词是否计数?对不起,我很困惑:谢谢,你几乎回答了我的问题:。我有50多份文件,我理解你的前两个步骤——它们非常简单明了。我听不懂你的第三步,你能再解释一下吗?如何计算每个文件的字数?我需要做两个循环吗?第一个将运行所有术语,第二个将检查每个文件中的特定单词是否计数?对不起,我弄糊涂了:谢谢,可以吗
d请你更精确一点?@user552961:我想的是一个地图的线条谢谢,你能更精确一点吗?@user552961:我想的是一个地图的线条你终止循环的方法有点不标准,结尾是一个有效的输入,只需检查nextLine是否返回null。哇,我真不敢相信我以前没见过这个…你的地图全错了…应该是…你试过这个吗?containsKey将抛出一个错误。现在好点了吗?它的工作原理是一样的。如果我使用map.getkey,它将返回值。如果我使用map.getvalue,它将返回键..我尝试使map.getword+1,但不起作用,甚至无法转换。你知道为什么吗?也许我没有正确地转换。你终止循环的方法有点不标准,结束是一个有效的输入,而只是检查nextLine是否返回null。哇,我不敢相信我以前没有看到这个…你的地图都错了…应该是…你试过这个吗?containsKey将抛出一个错误。现在好点了吗?它的工作原理是一样的。如果我使用map.getkey,它将返回值。如果我使用map.getvalue,它将返回键..我尝试使map.getword+1,但不起作用,甚至无法转换。你知道为什么吗?也许我投得不对。。