我有问题;我有一些数据,我用Hashtable
显示
例如我写道:
Enumeration keys;
keys=CellTraffic_v.elements();
while(keys.hasMoreElements())
outputBuffer.append(keys.nextElement()+"\n\n");
但它向我展示了如何将价值观和关键点一起展示给我的价值观? 例如这个
如果我的密钥是“A” 我的价值是“B”告诉我这个:
A B
谢谢...
答案 0 :(得分:18)
Hashtable
实施Map
。 Map.entrySet
函数返回Set
个实例的集合(Map.Entry
),这些实例具有getKey
和getValue
方法。
所以:
Iterator<Map.Entry> it;
Map.Entry entry;
it = yourTable.entrySet().iterator();
while (it.hasNext()) {
entry = it.next();
System.out.println(
entry.getKey().toString() + " " +
entry.getValue().toString());
}
如果您知道Hashtable中条目的类型,则可以使用模板消除上面的toString
调用。例如,如果您的Hashtable被声明为entry
,则Map.Entry<String,String>
可以声明为Hashtable<String,String>
。
如果你可以将模板与泛型组合在一起,那就简短了:
for (Map.Entry<String,String> entry : yourTable.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
假设yourTable
是Hashtable<String,String>
。只是展示了Java在过去几年里走了多远,基本上没有失去其基本的Java-ness。
稍微OT:如果您不需要同步,请使用HashMap
代替Hashtable
。如果你这样做,请使用ConcurrentHashMap
(谢谢,akappa!)。
答案 1 :(得分:8)
你有钥匙吗?使用键从地图中获取值,并且您拥有所有映射。例如,在Java中使用String作为键的类型:
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
答案 2 :(得分:1)
entrySet()返回Hashtable中值的枚举 keySet()返回Hashtable中键的枚举 entrySet()以条目
的形式返回条目(键和值)for( Iterator iter=hash.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
String value = (String) hash.get( key );
}
for( Iteration iter=hash.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
}
或使用泛型,在这种情况下,您的哈希是一个HashMap&lt; String,String&gt;
for( String key : hash.keySet() ) {
String value = hash.get( key );
}
for( Map.Entry entry : hash.entrySet() ) {
String key = entry.getKey();
String value = entry.getValue();
}