Kir*_*irk 2 java string hashtable
我有一个Hashtable类型的Hashtable
我已经加载了几个字符串作为键,其中一个是"ABCD"
但是,稍后当我去查找"ABCD"时,Hashtable返回null而不是关联的对象.此外,密钥集包含"ABCD",但对containsKey("ABCD")的请求返回false.
这是因为String对象本质上是不同的对象吗?
如果是这样,如果我想使用字符串作为键,那么在Hashtable中存储信息的写入方式是什么?
public class Field {
private String name;
private DataType dataType;
public Field(String name, DataType dataType) {
this.name = name;
this.dataType = dataType;
}
public String getName() {
return name;
}
public DataType getDataType() {
return dataType;
}
public String toString() {
return name;
}
}
public class Record {
private Hashtable<String, Data> content;
public Record(Field[] fieldList) {
this.fieldList = fieldList;
content = new Hashtable<String, Data>();
System.out.println(fieldList.length);
for(Field f : fieldList) {
content.put(f.getName(), new Data());
}
}
public void add(String field, String s) {
// ERROR OCCURS HERE IN THIS METHOD !!!
System.out.println(field);
for(String ss : content.keySet()) {
System.out.print(" [ " + ss + " ] ");
}
System.out.println();
System.out.println(content.containsKey(field));
System.out.println(content.get(field));
content.get(field).add(s);
}
}
public class Data {
private Vector<String> lines;
private int index;
public Data() {
lines = new Vector<String>();
index = 0;
}
public void add(String s) {
System.out.println("adding");
lines.add(s);
}
public String nextLine() {
try {
return lines.elementAt(index++);
} catch (ArrayIndexOutOfBoundsException aioobe) {
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
适合我!
import java.util.Hashtable;
public class StrMap {
public static void main(String[] args) {
Hashtable<String,Object> map = new Hashtable<String,Object>();
map.put("ABCD", "value");
System.err.println(map.containsKey("ABCD"));
}
}
Run Code Online (Sandbox Code Playgroud)
哟可能犯了一些其他错误.将问题减少到仍然显示问题的最小的完整可编译程序.您可能会立即发现问题.如果你不这样做,至少你会有一个我们可以回答的问题.
(也Map并HashMap是的路要走.Hashtable是,如果你使用的是预的Java 2 API有用(的Java 2是舒服了十多年的老吧!).)