要遍历一个Hashtable,api中提供了如下几个方法可供我们遍历:

  keys() - returns an Enumeration of the keys of this Hashtable

  keySet() - returns a Set of the keys

  entrySet() - returns a Set of the mappings

  elements() - returns an Enumeration of the values of this Hashtable

4种方法,那种更好呢,写段代码来比较一下吧:
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map.Entry;
public class HashtableTest
{
     public static void main(String[]
args) {
           long start
= 0;
           long end
= 0;
          
          Hashtable<String, String> table = new Hashtable<String,
String>();
           forint i
= 0; i < 1000000; i++) {
              table.put( "key:" +
i, "value:" + i);
          }
          
           //1、使用keys()
          start = System. currentTimeMillis();
          Enumeration<String> en1 = table.keys();
           while(en1.hasMoreElements())
{
              en1.nextElement();
          }
          end = System. currentTimeMillis();
          System. out.println( "Enumeration
keys costs " + (end - start) + " milliseconds" );
          
           //2、使用elements()
          start = System. currentTimeMillis();
          Enumeration<String> en2 = table.elements();
           while(en2.hasMoreElements())
{
              en2.nextElement();
          }
          end = System. currentTimeMillis();
          System. out.println( "Enumeration
elements costs " + (end - start) + " milliseconds" );
          
           //3、使用keySet()
          start = System. currentTimeMillis();
          Iterator<String> it1 = table.keySet().iterator();
           while(it1.hasNext())
{
              it1.next();
          }
          end = System. currentTimeMillis();
          System. out.println( "Iterator
keySet costs " + (end - start) + " milliseconds" );
          
           //4、使用entrySet()
          start = System. currentTimeMillis();
          Iterator<Entry<String, String>> it2 = table.entrySet().iterator();
           while(it2.hasNext())
{
              it2.next();
          }
          end = System. currentTimeMillis();
          System. out.println( "Iterator
entrySet costs " + (end - start) + " milliseconds" );
     }
}
运行结果如下:
Enumeration keys costs 16 milliseconds
Enumeration elements costs 15 milliseconds
Iterator keySet costs 17 milliseconds
Iterator entrySet costs 16 milliseconds
通过运行结果显示,在如今jdk的版本下,两者差距不是很大,不过使用Enumeration去遍历会稍微快一些。

Hashtable类中的四种遍历方法对比的更多相关文章

  1. HashMap的四种遍历方法,及效率比较(简单明了)

    https://yq.aliyun.com/ziliao/210955 public static void main(String[] args) { HashMap<Integer, Str ...

  2. java 完全二叉树的构建与四种遍历方法

    本来就是基础知识,不能丢的太干净,今天竟然花了那么长的时间才写出来,记一下. 有如下的一颗完全二叉树: 先序遍历结果应该为:1  2  4  5  3  6  7 中序遍历结果应该为:4  2  5 ...

  3. RBAC类在ThinkPHP中的四种使用方法

    第一类:放在登陆控制器的登陆操作中 1.RBAC::authenticate(); 用于在用户表中查找表单提交的用户名的数据,实质上就是一条用户表查寻语句,=====> return M(mod ...

  4. java Map 四种遍历方法

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  5. javascript中的几种遍历方法浅析

    1. for...in 用于对数组或者对象的属性的可枚举属性进行循环操作.注意该对象来自原型链上的可枚举属性也会被循环.下面看例子 var arr = ["lee","h ...

  6. Map的四种遍历方法

    1.取值遍历 for(String key:map.keySet()){ System.out.println("key="+key+"and value=" ...

  7. arrayLiist的四种遍历方法

    package com.test; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public ...

  8. NSArray四种遍历方法

  9. AJPFX关于Java中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...

随机推荐

  1. sqoop job从创建到执行

    在学习sqoop job之前,最好先学习一下sqoop命令的导入导出 sqoop 使用 import 将 mysql 中数据导入到 hive sqoop 使用 import 将 mysql 中数据导入 ...

  2. eclipse中使用git技巧总结

    之前一直使用svn,刚使用git还是有些蹩脚,今天总结下在使用git中常用技巧 1. ①.整个版本还原 当需要还原到某个版本时(多文件),操作如下 右击项目-->Team-->Show i ...

  3. linux 压缩和归档

    在linux下有几种压缩方式:gzip.bzip2.xz.zip gzip 压缩文件以.gz结尾, 只能压缩文件,不能压缩目录 用法: gzip:/path/to/somefile   用来压缩,完成 ...

  4. winform 添加帮助按钮

    1. 添加提示信息 新建个窗体项目,项目名称为WinFormUI,解决方案名称为WinFormWithHelpDoc.删除默认创建的Form1,新建窗体MainForm,设置相关属性.我们要完成的效果 ...

  5. HTML5中Modernizr类库的作用和使用

    Modernizr 是一个用来检测浏览器功能支持情况的JavaScript 库.通过这个库我们可以检测不同的浏览器对于HTML5特性的支持情况. 使用Modernizr类库和使用其他第三方类库的方法是 ...

  6. inux命令学习笔记(13):less 命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大. less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面 ...

  7. HDU5768Lucky7(中国剩余定理+容斥定理)(区间个数统计)

    When ?? was born, seven crows flew in and stopped beside him. In its childhood, ?? had been unfortun ...

  8. BZOJ4317: Atm的树+2051+2117

    BZOJ4317: Atm的树+2051+2117 https://lydsy.com/JudgeOnline/problem.php?id=4317 分析: 二分答案之后就变成震波那道题了. 冷静一 ...

  9. BZOJ2212:[POI2011]Tree Rotation

    浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...

  10. android开发 服务器端访问MySQL数据库,并把数据库中的某张表解析成xml格式输出到浏览器

    我们此时只要写一个Servlet就可以了: public class UpdateMenuServlet extends HttpServlet { /** * */ private static f ...