Hashtable <String,Object>找不到字符串

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)

Tom*_*ine 8

适合我!

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)

哟可能犯了一些其他错误.将问题减少到仍然显示问题的最小的完整可编译程序.您可能会立即发现问题.如果你不这样做,至少你会有一个我们可以回答的问题.

(也MapHashMap是的路要走.Hashtable是,如果你使用的是预的Java 2 API有用(的Java 2是舒服了十多年的老吧!).)