Reputation: 23
This first part is an example I found from the web and modified to quickly try different solutions. As the title states I cant figure out how to pull the WordHold object so that I can continue to modify it when I need to retrieve it.
import java.util.Collection;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Set;
public class HashtableDemo {
public static void main(String args[]) {
WordHold temp = new WordHold("test1", "test2");
WordHold temp2;
// Creating Hashtable for example
Hashtable companies = new Hashtable();
// Java Hashtable example to put object into Hashtable
// put(key, value) is used to insert object into map
companies.put("Google", temp);
companies.put("Nokia", "Finland");
companies.put("Sony", "Japan");
// Java Hashtable example to get Object from Hashtable
// get(key) method is used to retrieve Objects from Hashtable
temp2 = companies.get("Google");
// Hashtable containsKey Example
// Use containsKey(Object) method to check if an Object exits as key in
// hashtable
System.out.println("Does hashtable contains Google as key: "
+ companies.containsKey("Google"));
// Hashtable containsValue Example
// just like containsKey(), containsValue returns true if hashtable
// contains specified object as value
System.out.println("Does hashtable contains Japan as value: "
+ companies.containsValue("Japan"));
// Hashtable enumeration Example
// hashtabl.elements() return enumeration of all hashtable values
Enumeration enumeration = companies.elements();
while (enumeration.hasMoreElements()) {
System.out
.println("hashtable values: " + enumeration.nextElement());
}
// How to check if Hashtable is empty in Java
// use isEmpty method of hashtable to check emptiness of hashtable in
// Java
System.out.println("Is companies hashtable empty: "
+ companies.isEmpty());
// How to find size of Hashtable in Java
// use hashtable.size() method to find size of hashtable in Java
System.out.println("Size of hashtable in Java: " + companies.size());
// How to get all values form hashtable in Java
// you can use keySet() method to get a Set of all the keys of hashtable
// in Java
Set hashtableKeys = companies.keySet();
// you can also get enumeration of all keys by using method keys()
Enumeration hashtableKeysEnum = companies.keys();
// How to get all keys from hashtable in Java
// There are two ways to get all values form hashtalbe first by using
// Enumeration and second getting values ad Collection
Enumeration hashtableValuesEnum = companies.elements();
Collection hashtableValues = companies.values();
// Hashtable clear example
// by using clear() we can reuse an existing hashtable, it clears all
// mappings.
companies.clear();
}
}
The subclass being used.
public class WordHold
{
// instance variables - replace the example below with your own
private String wrongWord;
private String correctWord;
private WordHold next;
public WordHold(String wordWrong, String wordCorrect)
{
wrongWord = wordWrong;
correctWord = wordCorrect;
}
/**
* Returns the wrong word
*
* @return The stored wrong word.
*/
public String getWrongWord()
{
return wrongWord;
}
/**
* Returns the correct word
*
* @return The stored wrong word.
*/
public String getCorrectWord()
{
return correctWord;
}
/**
* Returns the next element
*
* @return The next element in list.
*/
public WordHold getNext()
{
return next;
}
/**
* Sets next element in the list.
*/
public WordHold setNext()
{
return next;
}
public String toString()
{
String temp = (wrongWord + " no " + correctWord);
return temp;
}
}
Upvotes: 2
Views: 9377
Reputation: 46428
I only skimmed through your code and found that you are not using generics with your collections. i guess, when you try to get the WorldHold object out of your Hashtable you will have to cast it to WorldHold, as if you dont use generics, it would return java.Lang.Object .
Declaring your hashtable like:
Hashtable<WordHold> companies = new Hashtable<WordHold>();
would solve the problem.
or if you dont want to use generics, you will have to explicitly cast the returned Object to WordHold.
temp2 = (WordHold)companies.get("Google");
I strongly suggest you to use generics if you are using java 1.5+. as they add compile time safety to your collections. if you dont use them, you could simply add any objects into your collections and also, you can get rid of such un-wanted casting while retriving the object back from the collection.
Upvotes: 1
Reputation: 119
Hope this example helps u
import java.util.*;
public class hashtable {
public static void main(String[] args) {
Hashtable hastab = new Hashtable();
hastab.put("a", "andrews");
hastab.put("b", "bob");
hastab.put("c", "christina");
hastab.put("d", "dude");
hastab.put("e", "era");
Set s = hastab.entrySet();
Iterator it = s.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
IF you are trying to pull from a class simple say System.out.println(it.next().value().getWordWrong())
(create a getter for both the strings in your wordwrong class)
Upvotes: 0
Reputation: 10997
WordHold t = (WordHold)companies.get("Google");
will retrieve it from HashTable companies
temp2 = companies.get("Google");
this line should not compile
Upvotes: 1