`
58liyl
  • 浏览: 4649 次
  • 性别: 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数据结构算法

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

    Java数据结构和算法.rar

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

    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数据结构 java语言描述 java算法分析 java初学者 java入门到精通

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

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

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

    数据结构于算法(java版)

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

    Java 算法实现代码集.zip

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

    Java数据结构和算法中文

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

    Java数据结构和算法.(第二版)

    10. **动态规划**:动态规划用于解决最优化问题,通过构建状态转移方程找到最优解。如背包问题、最长公共子序列、斐波那契数列等。 这些知识点不仅是Java程序员的基础,也是提升编程能力和解决复杂问题的关键。通过...

    学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持。.zip

    - **贪心算法**:每次做出局部最优选择,期望得到全局最优解,如Prim算法构建最小生成树。 - **回溯算法**:在解决问题时尝试所有可能的解决方案,如八皇后问题、N皇后问题、图的后根遍历。 - **分治算法**:将大...

    牛客网算法基础和进阶资源

    2. **贪心算法**:贪心策略是局部最优解来达到全局最优解的方法,适用于某些特定类型的问题,如霍夫曼编码、 Prim 算法(最小生成树)等。 3. **分治策略**:将大问题分解为小问题来解决,如归并排序、快速排序、大...

    面试常见基础算法题总结

    3. **贪心算法与动态规划**:贪心算法在每一步选择最优解,不考虑全局最优,适合于问题可以局部最优解导出全局最优解的情况。动态规划则是先求解子问题,保存结果,逐步构建全局最优解。 4. **链表环检测**:可以...

    华为OD机试C卷- 高效货运(Java & JS & Python & C).md-私信看全套OD代码及解析

    在解决此类问题时,我们需要考虑所有可能的装载组合,并从中筛选出最优解。 具体来说,我们需要对货物A和货物B的所有可能数量进行遍历,计算每种组合的总重量是否等于货车的额定载重`wt`,并同时记录下这些组合中的...

    数据结构与算法思维导图1

    5. **贪心算法**:在每一步选择局部最优解,期望得到全局最优解。但贪心算法并不总是能得到最佳答案,如霍夫曼编码就是贪心算法的一个应用。 6. **动态规划(DP)**:通过定义状态,找出问题的最优子结构,并用状态...

    Data-Structure-and-Algorithm-in-JAVA:学习JAVA中的基本数据结构和算法

    6. **回溯法**:在解决问题时,若发现当前选择无法导致最优解,则退回一步重新选择,常用于解决组合优化问题,如八皇后问题。 7. **图算法**:Dijkstra算法求最短路径,Floyd-Warshall算法求所有顶点间的最短路径,...

    关于数据结构与算法相关实例Demo.zip

    12. 回溯法:一种试探性的解决问题方法,用于找出所有可能的解决方案,然后逐步回溯以找到最优解,如八皇后问题。 13. 分治法:将大问题分解为小问题,分别解决后再合并结果,如快速排序、归并排序、Strassen矩阵...

    leetcode_java

    5. **贪心与动态规划**:贪心算法在处理局部最优解的问题时效果良好,但不一定能得到全局最优解。动态规划则通过构建状态转移方程,从最底层向上逐步求解,可以解决许多最优化问题,如背包问题、最长公共子序列等。 ...

Global site tag (gtag.js) - Google Analytics