我是 C 程序员,现在我转向 Java。我正在尝试将 C 程序转换为 Java 程序。C 程序只计算词频和逆文档频率 ( tf/idf )。
我创建了一个数据类
public class Data {
private String fileName,fileText;
private int fileId;
private float value;
public void addData(String fileName, String fileText, float value){
this.fileName = fileName;
this.fileText = fileText;
this.value = value;
}
public int getFileId(){
return this.fileId;
}
public String getFileName(){
return this.fileName;
}
public String getFileText(){
return this.fileText;
}
public float getValue(){
return this.value;
}
}
该类负责存储文件名、文件文本和值(tf 值或 idf 值)。
以下类负责存储数据:
public class main {
public static void main(String[] args) {
HashMap<String, Data> map = new HashMap<String, Data>();
Data dt = new Data();
dt.addData("abc.txt", "some contents", 2);
map.put("1",dt);
dt.addData("w", "some more contents in second file", 3);
map.put("2",dt);
System.out.println(map);
}
}
当我打印地图时,它给了我一些奇怪的值。我想,我必须声明数据类的数组?我不知道有多少文件,因此我不能放置任何静态数组编号。
另外,如何根据这个数据结构计算TF和IDF?
在 C 程序中,我只是读取文件,计算单词数除以总单词数得到 TF,一个单词除以该单词在所有文件中的总出现次数得到 IDF。我不知道如何使用上述数据结构来做到这一点。
我得到奇怪的价值观。也许这些是对象:
{2=test2.Data@19821f, 1=test2.Data@19821f}
有什么方法可以使用getFileName
等函数从 Data 类中获取特定值?