私は C プログラマーで、現在は Java に移行しています。CプログラムをJavaプログラムに変換しようとしています。C プログラムは、単純に用語頻度と逆文書頻度 ( tf/idf ) を計算します。
1 つのデータ クラスを作成しました
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
etc. 関数を使用して Data クラスから特定の値を取得する方法はありますか?