gpt4 book ai didi

java - 如何从 Java 对象中提取数据?

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

我是 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;
}
}

该类负责存储文件名、文件文本和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);

}

}

当我打印 map 时,它给了我一些奇怪的值。我想,我必须声明数据类数组?我不知道有多少个文件,因此我不能放置任何静态数组号。

另外,如何根据这个数据结构计算TF和IDF?

在 C 程序中,我只需读取文件,计算单词数除以单词总数即可得到 TF,将单词除以该单词在所有文件中出现的总数即可得到 IDF。我不知道如何使用上面的数据结构来做到这一点。

我得到了奇怪的值。也许这些是对象:

{2=test2.Data@19821f, 1=test2.Data@19821f}

有没有办法使用getFileName等函数从Data类获取特定值?

最佳答案

对于问题一,除非您覆盖 toString() ,仅仅通过将对象直接打印到标准输出不太可能获得任何有意义的输出。 “test2.Data@19821f”是什么Object.toString()返回 - 类名后跟对象哈希值。在这种情况下,它非常有帮助地表明您的两个值是相同的对象。

您可以使用 java.io.File 打开/读取文件和java.io.FileInputStream 。从字符串到整数的映射 java.util.Map<String,Integer>可能会有助于计算这些文件中的单词数。

这个简单的应用程序似乎并不需要太多数据类。您已经描述了要遵循的算法,这只是用 Java 语法编写它的情况。

欢迎来到类型安全的奇妙世界,不用担心内存泄漏。

关于java - 如何从 Java 对象中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522861/

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