私のプログラムに関する情報は、別のチェーンを使って衝突を処理するハッシュテーブルを実装しました。csvファイルを読み込み、キーと値に分割してハッシュテーブルに入れます。
class TableInput{
Object key;
Object value;
TableInput(Object key, Object value){
this.key = key;
this.value = value;
}
}
abstract class HashTable {
protected TableInput[] tableInput;
protected int size;
HashTable (int size) {
this.size = size;
tableInput = new TableInput[size];
for (int i = 0; i <= size - 1; i++){
tableInput[i] = null;
}
}
abstract int hash(Object key);
public abstract void insert(Object key, Object value);
public abstract Object retrieve(Object key);
}
class ChainedTableInput extends TableInput {
ChainedTableInput(Object key, Object value){
super(key, value);
this.next = null;
}
ChainedTableInput next;
}
class ChainedHashTable extends HashTable {
ChainedHashTable(int size) {
super(size);
// TODO Auto-generated constructor stub
}
public int hash(Object key){
return key.hashCode() % size;
}
public Object retrieve(Object key){
ChainedTableInput p;
p = (ChainedTableInput) tableInput[hash(key)];
while(p != null && !p.key.equals(key)){
p = p.next;
}
if (p != null){
return p.value;
}
else {
return null;
}
}
public void insert(Object key, Object value){
ChainedTableInput entry = new ChainedTableInput(key, value);
int k = hash(key);
ChainedTableInput p = (ChainedTableInput) tableInput[k];
if (p == null){
tableInput[k] = entry;
return;
}
while(!p.key.equals(key) && p.next != null){
p = p.next;
}
if (!p.key.equals(key)){
p.next = entry;
}
}
public double distance(Object key1, Object key2){
final int R = 6373;
Double lat1 = Double.parseDouble(Object);
}
}
ここでは、都市名、緯度および経度を含むcsvファイルがあります。コマンドライン引数からcsvファイルを読み込み、ハッシュテーブルのキーとして都市名を入力し、値として緯度と経度を入力する必要があります。私の質問は、どのように私はcsvファイルを読み取って、ハッシュテーブルに入れるキーオブジェクトと値オブジェクトにデータを分離することができますか?このような
あなたのCSVファイルをフォーマットする方法に応じて、私は最初の列としてキーを置くためにあなたをお勧めします。どの列にでも入れることができますが、同じ規則に従う必要があります。 – Rugal
あなたはあなたが精巧にできると思いますか?私は混乱しています – Regza123
都市名、緯度、経度などの各都市の各行を設定します。都市オブジェクトに組み立てる前に、毎回3つのフィールドを読み取る必要があります。 – Rugal