×

hashtable遍历

hashtable遍历(如何遍历hashtable)

admin admin 发表于2023-03-05 17:14:13 浏览27 评论0

抢沙发发表评论

本文目录

如何遍历hashtable


Map map= new Hashtable();
map.put(“a“, 1);
Set set=map.keySet();
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
System.err.println(map.get(object));

}

坐等高手解答!C#中Hashtable中每一个Key对应的Value都是一个Hashtable,请问该如何遍历此Hashtable


Hashtable ht=new Hashtable(); //创建一个Hashtable实例
ht.Add(“E“,“e“);//添加key/value键值对
ht.Add(“A“,“a“);
ht.Add(“C“,“c“);
ht.Add(“B“,“b“);
遍历哈希表需要用到DictionaryEntry Object,代码如下:
foreach(DictionaryEntry de in ht) //ht为一个Hashtable实例
{
MessageBox.Show(de.Key.ToString());//de.Key对应于key/value键值对key
MessageBox.Show(de.Value.ToString());//de.Key对应于key/value键值对value
}

Hashtable一个键多个值 在遍历怎么做啊


对哈希表进行排序在这里的定义是对key/键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
  ArrayList akeys=new ArrayList(ht.Keys); //别忘了导入System.Collections
  akeys.Sort(); //按字母顺序进行排序
  foreach(string skey in akeys)
  {
  Console.Write(skey+ “:“);
  Console.WriteLine(ht[skey]);//排序后输出
  }

HashTable中的元素可以用for循环去遍历吗


直接用for循环遍历不行吧,直接循环访问可以用foreach遍历:
foreach (DictionaryEntry obj in ht) {}
还有一种就是用IDictionaryEnumerator :
IDictionaryEnumerator enumerator = ht.GetEnumerator();
while (enumerator.MoveNext())
{}

foreach遍历hashtable问题


首先,Hashtable是无序的,所以不存在像数组中的最后一个元素那样的概念。
第二,foreach本身也是没有循环变量的,因此不能控制循环数量。
第三,如果你真的就不管最后一个是谁,就像对那个数据做处理的话,你可以做一个局部变量,在foreach里将你的那个bid的内容存下来,在foreach之后用这个变量到Hashtable里就可以取到最后一次循环所处理的数据了。

java 多线程操作hashtable(添加,删除,遍历)


public class TestThread {
public static void main(String args){
Map《Integer, Object》 tables = new Hashtable《Integer, Object》();
Thread add = new Thread(new ThreadAdd(tables));
Thread del = new Thread(new ThreadDel(tables));
Thread count = new Thread(new ThreadCount(tables));
//启动线程
add.start();
del.start();
count.start();
}
/**
*添加对象线程
*/
private static class ThreadAdd implements Runnable{
private Map《Integer, Object》 table;
public ThreadAdd(Map《Integer, Object》 tables){
this.table=tables;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i《10;i++){
table.put(i, new Object());
System.out.println(“添加对象,序号为:“+i);
}
}
}
/**
*删除对象线程
*/
private static class ThreadDel implements Runnable{
private Map《Integer, Object》 table;
public ThreadDel(Map《Integer, Object》 table){
this.table=table;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i《10;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
table.remove(i);
System.out.println(“移除对象,序号为:“+i);
}
}
}
/**
*统计线程
*/
private static class ThreadCount implements Runnable{
private Map《Integer, Object》 table;
public ThreadCount(Map《Integer, Object》 table){
this.table=table;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i《10;i++){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(“当前队列还剩“+table.size()+“个对象“);
}
}
}
}
这是我的写的demo,不知道符合不符合你的意思,大家共同交流共同进步。

遍历hashtable并截取遍历的问题


HashMap遍历的两种方式:
第一种:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,推荐使用此种方式!
第二种:
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Object key = iter.next();
Object val = map.get(key);
}
效率低比第一种要低,不推荐使用!
下面是一个实例,通过运行的毫秒数可以看出两种方法遍历速度的快慢
public class HashMapTest {
public static void main(String args) {
HashMap hashmap = new HashMap();
for (int i = 0; i 《 1000; i++ ){
hashmap.put(i, “thanks“);
}
long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
while (iterator.hasNext()){
System.out.print(hashmap.get(iterator.next()));
}
System.out.println();
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
listHashMap();
}

public static void listHashMap(){
java.util.HashMap hashmap = new java.util.HashMap();
for (int i = 0; i 《 1000; i++ ){
hashmap.put(i, “thanks“);
}
long bs = Calendar.getInstance().getTimeInMillis();
java.util.Iterator it = hashmap.entrySet().iterator();
while (it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
// entry.getKey() 返回与此项对应的键
// entry.getValue() 返回与此项对应的值
System.out.print(entry.getValue());
}
System.out.println();
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
}
}
对于keySet其实是遍历了2次,一次是转为iterator,一次就是从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以快了。
我验证了一下,两种遍历的遍历时间相差还是很明显的,有兴趣的同学可以直接把代码粘过去试下,另外运用时间来比较程序运行效率的方法也很值得学习,也很简单

C# 如何快速遍历HashTable


using System;
using System.Collections;
public class HashtableTest
{

public static void Main(string args)
{
Hashtable ht = new Hashtable();
string strs = new string { “a“, “b“, “c“ };
for (int i = 0; i 《 strs.Length; i++)
{
ht.Add(i.ToString(), strs[i]);
}
foreach (string value in ht.Values)
{
Console.WriteLine(value);
}
Console.ReadLine();
}
}

java问题,如何遍历,这一个hashtable是啥意思


HashTable和HashMap是一样的,区别只是同步与非同步问题;
遍历方式和map一样
两种方式
使用keySet方法获得所有的key,然后变量这个Set
或者是使用EntrySet方法,获得所有键值对的视图,遍历可获得所有的key和value