On Apr 22, 3:32 pm, Sagarika <SonamSenSha...@[EMAIL PROTECTED]
> wrote:
> On Apr 22, 7:17 pm, Sagarika <SonamSenSha...@[EMAIL PROTECTED]
> wrote:
>
>
>
> > I am new in this group.So,if somehow my way of posting goes wrong
> > please pardon.
>
> > I made a program as MyHashTable described below.All I want to print
> > all the elements in the hashtable as a string.What should I do? Can
> > you help me?
>
> > im****t java.io.*;
> > im****t java.util.*;
> > im****t java.util.Comparator;
>
> > interface HashComparator{
> > boolean isComparable(Object key);
> > boolean isEqualTo(Object Key1,Object Key2);
> > int hashValue(Object key);
> > }
>
> > interface HashTable {
> > int size();
> > boolean present(int p);
> > boolean isEmpty(int e);
> > Object key(int k);
> > Object element(int e);
> > Object findElement(Object key);
> > void insert(Object key,Object element);
> > Object removeElement(Object key);
> > }
>
> > class InvalidKeyException extends RuntimeException {
> > InvalidKeyException(String message) {
> > super(message);
> > }
>
> > }
>
> > class HashTableFullException extends RuntimeException {
> > HashTableFullException(String message) {
> > super(message);
> > }
>
> > }
>
> > class data {
> > Object key,element;
>
> > data() {
> > key =3D null;
> > element =3D null;
> > }
>
> > data(Object k,Object e){
> > key =3D k;
> > element =3D e;
> > }
>
> > public Object key(){ return key;}
> > public Object element(){ return element; }
> > public void setKey(Object k) { key =3D k; }
> > public void setElement(Object e) { element =3D e; }
> > }
>
> > public class MyHashTable implements HashTable {
>
> > static data PRESENT =3D new data();
>
> > int m,n;
>
> > data[] bucket;
> > Object NON_EXISTENT_KEY;
>
> > private static HashComparator C;
>
> > public MyHashTable(HashComparator C1){
> > n =3D 0;
> > C =3D C1;
> > m =3D 200;
> > bucket =3D new data[m];
> > }
>
> > public MyHashTable(HashComparator C1,int i){
> > n =3D 0;
> > C =3D C1;
> > m =3D i;
> > bucket =3D new data[m];
> > }
>
> > void examine(Object Key){
> > try {
> > if(!C.isComparable(Key)) throw new
> > InvalidKeyException("The key is not valid");
> > }
> > catch(NullPointerException n) { }
> > }
>
> > public boolean present(int x){ return (bucket[x] =3D=3D
> > PRESENT); }
>
> > public boolean isEmpty(int y){ return (bucket[y] =3D=3D null);
}=
>
> > public Object key(int k) { return bucket[k].key();}
>
> > public Object element(int e) { return bucket[e].element();}
>
> > public int size() { return n; }
>
> > int findData(Object key) throws InvalidKeyException {
> > examine(key);
> > int x =3D C.hashValue(key) % m;
> > int y =3D x;
> > do {
> > if(isEmpty(x)) return -1;
> > if(present(x)) x =3D (x+1) % m;
> > else if (C.isEqualTo(key(x),key))
> > return x;
> > else
> > x =3D (x+1) % m;
> > }while(x !=3D y);
> > return -1;
> > }
>
> > public Object findElement (Object key) throws
> > InvalidKeyException {
> > int x =3D findData(key);
> > if(x < 0) return this.NON_EXISTENT_KEY;
> > return element(x);
> > }
>
> > public void insert(Object key,Object element) throws
> > InvalidKeyException {
> > examine(key);
> > try {
> > int x =3D C.hashValue(key) % m;
> > int y =3D x;
> > do {
> > if(isEmpty(x) || present(x)) {
> > bucket[x] =3D new data(key,element);
> > return;
> > }
> > x =3D (x+1) % m;
> > }while(x !=3D y);
> > throw new HashTableFullException("Hash table is full.
> > ");
> > }
> > catch(NullPointerException n) { }
> > n++;
> > }
>
> > public Object remove(Object key) throws InvalidKeyException{
> > int x =3D findData(key);
> > if(x<0) return this.NON_EXISTENT_KEY;
> > Object O =3D element(x);
> > bucket[x] =3D PRESENT;
> > n--;
> > return O;
> > }
>
> > public static void main(String[] args) {
> > MyHashTable T =3D new MyHashTable(C);
> > try{
> > T.insert(new Integer(1),new Integer(29));
> > T.insert(new Integer(2),new Integer(45));
> > T.insert(new Integer(3),new Integer(37));
> > T.insert(new Integer(4),new Integer(99));
> > T.insert(new Integer(5),new Integer(58));
> > T.insert(new Integer(6),new Integer(76));
> > T.remove(new Integer(2));
> > System.out.println(); System.out.println();
> > System.out.println("The table size is " + T.size());
> > System.out.println();
> > }
> > catch(InvalidKeyException e) {
> > System.out.println("The key is Invalid");
> > System.out.println(e.getMessage());
> > }
> > }
>
> > }
>
> I have implemented toString function but all that it prints all the
> elements present in the hash table to be null why is it so?
> im****t java.io.*;
> im****t java.util.*;
> im****t java.util.Comparator;
>
> interface HashComparator{
> boolean isComparable(Object key);
> boolean isEqualTo(Object Key1,Object Key2);
> int hashValue(Object key);
> }
>
> interface HashTable {
> int size();
> boolean present(int p);
> boolean isEmpty(int e);
> Object key(int k);
> Object element(int e);
> Object findElement(Object key);
> void insert(Object key,Object element);
> Object remove(Object key);
> }
>
> class InvalidKeyException extends RuntimeException {
> InvalidKeyException(String message) {
> super(message);
> }
>
> }
>
> class HashTableFullException extends RuntimeException {
> HashTableFullException(String message) {
> super(message);
> }
>
> }
>
> class data {
> Object key,element;
>
> data() {
> key =3D null;
> element =3D null;
> }
>
> data(Object k,Object e){
> key =3D k;
> element =3D e;
> }
>
> public Object key(){ return key;}
> public Object element(){ return element; }
> public void setKey(Object k) { key =3D k; }
> public void setElement(Object e) { element =3D e; }
> }
>
> public class MyHashTable implements HashTable {
>
> static data PRESENT =3D new data();
>
> int m,n;
>
> data[] bucket;
> Object NON_EXISTENT_KEY;
>
> private static HashComparator C;
>
> public MyHashTable(HashComparator C1){
> n =3D 0;
> C =3D C1;
> m =3D 200;
> bucket =3D new data[m];
> }
>
> public MyHashTable(HashComparator C1,int i){
> n =3D 0;
> C =3D C1;
> m =3D i;
> bucket =3D new data[m];
> }
>
> void examine(Object Key){
> try {
> if(!C.isComparable(Key)) throw new
> InvalidKeyException("The key is not valid");
> }
> catch(NullPointerException n) { }
> }
>
> public boolean present(int x){ return (bucket[x] =3D=3D
> PRESENT); }
>
> public boolean isEmpty(int y){ return (bucket[y] =3D=3D null); }
>
> public Object key(int k) { return bucket[k].key();}
>
> public Object element(int e) { return bucket[e].element();}
>
> public int size() { return n; }
>
> int findData(Object key) throws InvalidKeyException {
> examine(key);
> int x =3D C.hashValue(key) % m;
> int y =3D x;
> do {
> if(isEmpty(x)) return -1;
> if(present(x)) x =3D (x+1) % m;
> else if (C.isEqualTo(key(x),key))
> return x;
> else
> x =3D (x+1) % m;
> }while(x !=3D y);
> return -1;
> }
>
> public Object findElement (Object key) throws
> InvalidKeyException {
> int x =3D findData(key);
> if(x < 0) return this.NON_EXISTENT_KEY;
> return element(x);
> }
>
> public void insert(Object key,Object element) throws
> InvalidKeyException {
> examine(key);
> try {
> int x =3D C.hashValue(key) % m;
> int y =3D x;
> do {
> if(isEmpty(x) || present(x)) {
> bucket[x] =3D new data(key,element);
> return;
> }
> x =3D (x+1) % m;
> }while(x !=3D y);
> throw new HashTableFullException("Hash table is full.
> ");
> }
> catch(NullPointerException n) { }
> n++;
> }
>
> public Object remove(Object key) throws InvalidKeyException{
> int x =3D findData(key);
> if(x < 0) return this.NON_EXISTENT_KEY;
> Object O =3D element(x);
> bucket[x] =3D PRESENT;
> n--;
> return O;
> }
>
> public String ConverttoString() {
> StringBuffer s =3D new StringBuffer();
> int i =3D 0;
> int elements =3D this.size();
> while(elements !=3D 0) {
> s.append(" " + this.bucket[i++]);
> elements -- ;
> }
> return s.toString();
> }
>
> public static void main(String[] args) {
> MyHashTable T =3D new MyHashTable(C);
> try{
> T.insert(new Integer(1),new Integer(29));
> T.insert(new Integer(2),new Integer(45));
> T.insert(new Integer(3),new Integer(37));
> T.insert(new Integer(4),new...
>
> read more =BB
In any case, did you try to debug your code? It compiles, but when it
runs the code fails to add ANY elements to your MyHashTable =3D> nulls
when you print it...


|