gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:29:00 25 4
gpt4 key购买 nike

这第一部分是我从网络上找到并修改以快速尝试不同解决方案的示例。如标题所述,我不知道如何提取 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;
}
}

最佳答案

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

像这样声明你的哈希表:

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

会解决问题。

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

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

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

Read about generics In java

关于java - 试图从 HashTable Java 中获取一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13774781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com