2

この最初の部分は、Web から見つけた例を変更して、さまざまなソリューションをすばやく試すことができます。タイトルにあるように、WordHold オブジェクトを取得する必要があるときに引き続き変更できるように、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;
    }
}
4

3 に答える 3

1

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

HashTable企業から取得します

temp2 = companies.get("Google");この行はコンパイルすべきではありません

于 2012-12-08T05:25:56.433 に答える
1

私はあなたのコードをざっと読んだだけで、コレクションでジェネリックを使用していないことがわかりました。Hashtable から WorldHold オブジェクトを取得しようとすると、それを WorldHold にキャストする必要があると思います。ジェネリックを使用しない場合は、java.Lang.Objectが返されます。

次のようにハッシュテーブルを宣言します。

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

問題を解決します。

ジェネリックを使用したくない場合は、返されたオブジェクトを WordHold に明示的にキャストする必要があります。

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

Java 1.5+を使用している場合は、 ジェネリックを使用することを強くお勧めします。コレクションにコンパイル時の安全性を追加するためです。それらを使用しない場合は、オブジェクトをコレクションに追加するだけで済みます。また、コレクションからオブジェクトを取得するときに、そのような不要なキャストを取り除くこともできます。

Java のジェネリックについて読む

于 2012-12-08T05:26:15.863 に答える
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().value().getWordWrong()) と言います

(間違ったクラスの両方の文字列のゲッターを作成します)

于 2012-12-08T05:30:25.947 に答える