`
58liyl
  • 浏览: 4613 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

【转】java Map 遍历速度最优解

阅读更多

java Map 遍历速度最优解

 

第一种: 

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); 

效率低,以后尽量少使用! 

HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:

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中,所以就快了。

注:Hashtable的遍历方法和以上的差不多!


分享到:
评论

相关推荐

    数据结构与算法分析(Java版英文)

    10. **动态规划**:动态规划用于解决最优化问题,通过构建子问题的最优解来找到整个问题的最优解。它在背包问题、最长公共子序列等许多问题中都有应用。 11. **贪心算法**:贪心算法每次选择当前最优解,期望得到...

    java数据结构算法

    13. **贪心算法**:通过局部最优解逐步构建全局最优解,如Prim算法和Kruskal算法用于构建最小生成树。 14. **回溯法**:一种试探性的解决问题的方法,当发现当前选择无法达到目标时,回溯到上一步尝试其他路径,常...

    Java数据结构和算法.rar

    13. **贪心算法**:局部最优解能导致全局最优解的问题,如活动选择问题、最小生成树(Prim或Kruskal算法)。 14. **回溯法**:一种试探性的解决问题方法,如八皇后问题、迷宫问题等。 15. **分治法**:将大问题...

    数据结构与算法分析(Java版)

    贪心算法在每一步选择局部最优解,期望得到全局最优解,适用于作业调度和最小生成树等问题。而分治法将大问题分解为小问题求解,典型应用如快速排序和归并排序。 此外,书中可能还涉及了数据结构的高级主题,如堆...

    java面试-leetcode面试java编程题解之第1题两数之和-java题解.zip

    更优的解决方案是使用哈希表,将每个元素及其索引存入表中,然后遍历数组,对于每个元素,检查哈希表中是否存在目标值减去当前元素的值,如果存在则返回这两个元素的索引。这种方法的时间复杂度为O(n)。 以下是Java...

    Java数据结构和算法

    13. **贪心算法**:贪心算法每次做出局部最优选择,期望得到全局最优解,如霍夫曼编码和Prim算法构建最小生成树。 14. **回溯法**:当问题有多个解时,回溯法用于在搜索过程中剪枝,如八皇后问题和N皇后问题。 ...

    Data Structures And Algorithms in Java.pdf

    - **贪心算法**:局部最优解,如活动选择问题、霍夫曼编码。 3. **Java特性**:书中将这些数据结构和算法实现为Java类和接口,这涵盖了Java的面向对象特性,如封装、继承、多态,以及泛型、异常处理、并发编程等...

    数据结构(java版)(第二版)[叶核亚编著][程序源代码]

    12. **动态规划**:解决多阶段决策问题的一种方法,常用于解决复杂问题的最优解。 13. **贪心算法**:每次做出局部最优决策,希望最终得到全局最优解。常用于资源分配、任务调度等问题。 14. **分治策略**:将大...

    数据结构与算法分析Java语言描述 原书第3版

    动态规划则是一种解决最优化问题的策略,它通过构建子问题的最优解来得到原问题的最优解。 5. **图算法**:如深度优先搜索(DFS)和广度优先搜索(BFS),以及Dijkstra最短路径算法、Floyd-Warshall所有对最短路径...

    java数据结构 java语言描述 java算法分析 java初学者 java入门到精通

    - **贪心算法**:解决局部最优解问题,如霍夫曼编码、最小生成树等。 5. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特点和用途...

    数据结构与算法分析(Java版英文

    7. 近似算法:在无法找到精确解的情况下,寻找接近最优解的方法,如旅行商问题、最小割问题。 8. 图论算法:如最短路径算法(Dijkstra算法、Floyd-Warshall算法)、最小生成树算法(Prim算法、Kruskal算法)。 三、...

    JAVA数据结构与算法.rar

    14. **回溯法**:在搜索解决方案时,如果发现当前选择无法导致最优解,则退回一步重新选择,常用于解谜题和排列组合问题。 15. **递归**:函数调用自身,常用于解决树形结构问题,如二叉树遍历和阶乘计算。 16. **...

    java数据结构和算法(第二版)编程作业答案

    - **动态规划**:解决多阶段决策问题,如背包问题、最长公共子序列等,通过建立状态转移方程求解最优解。 - **贪心算法**:每次做出局部最优决策,如Prim算法和Kruskal算法用于构造最小生成树。 - **回溯法**:在...

    数据结构与算法分析(JAVA版)

    动态规划则是通过解决子问题来构建全局最优解,如背包问题、最长公共子序列等。 9. **字符串处理**:字符串在编程中频繁出现,理解其内部实现(如Java的String和StringBuilder类)和字符串操作(如模式匹配、子串...

    数据结构与算法分析(java版内含源代码)

    - **局部最优解**:每次选取当前状态下最优解,逐步达到全局最优,如Prim算法和Kruskal算法用于构造最小生成树。 8. **回溯法和分支限界法**: - **解空间树**:用于描述所有可能解的结构,常用于组合优化问题。 ...

    数据结构于算法(java版)

    10. **贪心算法**:贪心算法每次做出局部最优选择,以期望得到全局最优解,如Prim算法用于构造最小生成树。 11. **回溯法**:回溯法用于解决约束满足问题,如八皇后问题和N皇后问题。 12. **字符串处理**:Java的...

    数据结构与算法-java

    - **贪心算法**:每一步都采取局部最优解,如Prim算法和Kruskal算法用于最小生成树问题。 - **回溯法**:用于解决问题的解空间树,如八皇后问题、N-Queens问题。 - **分治法**:将大问题分解为小问题,如快速排序...

    Java 算法实现代码集.zip

    6. **贪心算法**:这种算法通常用于求解最优解,例如霍夫曼编码、活动选择问题等。 7. **分治策略**:包括归并排序、快速排序等,通过将大问题分解为小问题来求解。 8. **搜索算法**:如广度优先搜索(BFS),常...

    Java数据结构和算法中文

    - **贪心算法**:每次选择当前最优解,逐步达到全局最优,如霍夫曼编码、Prim算法构造最小生成树等。 - **回溯法**:用于解决组合优化问题,如八皇后问题、N皇后问题、迷宫问题等。 - **图算法**:Dijkstra最短...

Global site tag (gtag.js) - Google Analytics