试图从HashTable Java中获取一个对象

时间:2012-12-08 05:22:16

标签: java

这第一部分是我从网上找到的一个例子,经过修改后可以快速尝试不同的解决方案。正如标题所述,我无法弄清楚如何拉动WordHold对象,以便在需要检索时可以继续修改它。

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();
    }
}

正在使用的子类。

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;
    }
}

3 个答案:

答案 0 :(得分:1)

WordHold t = (WordHold)companies.get("Google");

将从HashTable公司检索它

temp2 = companies.get("Google");此行不应编译

答案 1 :(得分:1)

我只浏览了您的代码,发现您没有在收藏中使用 generics 。我想,当你试图从你的Hashtable中获取WorldHold对象时,你必须将它转换为WorldHold,就像你不使用泛型一样,它会返回 java.Lang.Object

声明您的哈希表如:

Hashtable<WordHold> companies = new Hashtable<WordHold>();

可以解决问题。

或者如果您不想使用泛型,则必须将返回的Object显式地转换为WordHold。

    temp2 = (WordHold)companies.get("Google");

如果您使用 java 1.5 + ,我强烈建议您使用 generics 。因为它们为您的集合添加了编译时安全性。如果你不使用它们,你可以简单地将任何对象添加到你的集合中,并且你可以在从集合中重新获取对象时摆脱这种不想要的转换。

Read about generics In java

答案 2 :(得分:0)

希望这个例子有助于你

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());
                }
        }
}

如果你试图从一个简单的说法拉出来 的System.out.println(it.next()。值()。getWordWrong())

(为wordwrong类中的两个字符串创建一个getter)