Answer:
Step-by-step explanation:
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);
}
}