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的遍历方法和以上的差不多!
分享到:
相关推荐
10. **动态规划**:动态规划用于解决最优化问题,通过构建子问题的最优解来找到整个问题的最优解。它在背包问题、最长公共子序列等许多问题中都有应用。 11. **贪心算法**:贪心算法每次选择当前最优解,期望得到...
13. **贪心算法**:通过局部最优解逐步构建全局最优解,如Prim算法和Kruskal算法用于构建最小生成树。 14. **回溯法**:一种试探性的解决问题的方法,当发现当前选择无法达到目标时,回溯到上一步尝试其他路径,常...
13. **贪心算法**:局部最优解能导致全局最优解的问题,如活动选择问题、最小生成树(Prim或Kruskal算法)。 14. **回溯法**:一种试探性的解决问题方法,如八皇后问题、迷宫问题等。 15. **分治法**:将大问题...
贪心算法在每一步选择局部最优解,期望得到全局最优解,适用于作业调度和最小生成树等问题。而分治法将大问题分解为小问题求解,典型应用如快速排序和归并排序。 此外,书中可能还涉及了数据结构的高级主题,如堆...
更优的解决方案是使用哈希表,将每个元素及其索引存入表中,然后遍历数组,对于每个元素,检查哈希表中是否存在目标值减去当前元素的值,如果存在则返回这两个元素的索引。这种方法的时间复杂度为O(n)。 以下是Java...
13. **贪心算法**:贪心算法每次做出局部最优选择,期望得到全局最优解,如霍夫曼编码和Prim算法构建最小生成树。 14. **回溯法**:当问题有多个解时,回溯法用于在搜索过程中剪枝,如八皇后问题和N皇后问题。 ...
- **贪心算法**:局部最优解,如活动选择问题、霍夫曼编码。 3. **Java特性**:书中将这些数据结构和算法实现为Java类和接口,这涵盖了Java的面向对象特性,如封装、继承、多态,以及泛型、异常处理、并发编程等...
12. **动态规划**:解决多阶段决策问题的一种方法,常用于解决复杂问题的最优解。 13. **贪心算法**:每次做出局部最优决策,希望最终得到全局最优解。常用于资源分配、任务调度等问题。 14. **分治策略**:将大...
动态规划则是一种解决最优化问题的策略,它通过构建子问题的最优解来得到原问题的最优解。 5. **图算法**:如深度优先搜索(DFS)和广度优先搜索(BFS),以及Dijkstra最短路径算法、Floyd-Warshall所有对最短路径...
- **贪心算法**:解决局部最优解问题,如霍夫曼编码、最小生成树等。 5. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特点和用途...
7. 近似算法:在无法找到精确解的情况下,寻找接近最优解的方法,如旅行商问题、最小割问题。 8. 图论算法:如最短路径算法(Dijkstra算法、Floyd-Warshall算法)、最小生成树算法(Prim算法、Kruskal算法)。 三、...
14. **回溯法**:在搜索解决方案时,如果发现当前选择无法导致最优解,则退回一步重新选择,常用于解谜题和排列组合问题。 15. **递归**:函数调用自身,常用于解决树形结构问题,如二叉树遍历和阶乘计算。 16. **...
- **动态规划**:解决多阶段决策问题,如背包问题、最长公共子序列等,通过建立状态转移方程求解最优解。 - **贪心算法**:每次做出局部最优决策,如Prim算法和Kruskal算法用于构造最小生成树。 - **回溯法**:在...
动态规划则是通过解决子问题来构建全局最优解,如背包问题、最长公共子序列等。 9. **字符串处理**:字符串在编程中频繁出现,理解其内部实现(如Java的String和StringBuilder类)和字符串操作(如模式匹配、子串...
- **局部最优解**:每次选取当前状态下最优解,逐步达到全局最优,如Prim算法和Kruskal算法用于构造最小生成树。 8. **回溯法和分支限界法**: - **解空间树**:用于描述所有可能解的结构,常用于组合优化问题。 ...
10. **贪心算法**:贪心算法每次做出局部最优选择,以期望得到全局最优解,如Prim算法用于构造最小生成树。 11. **回溯法**:回溯法用于解决约束满足问题,如八皇后问题和N皇后问题。 12. **字符串处理**:Java的...
- **贪心算法**:每一步都采取局部最优解,如Prim算法和Kruskal算法用于最小生成树问题。 - **回溯法**:用于解决问题的解空间树,如八皇后问题、N-Queens问题。 - **分治法**:将大问题分解为小问题,如快速排序...
6. **贪心算法**:这种算法通常用于求解最优解,例如霍夫曼编码、活动选择问题等。 7. **分治策略**:包括归并排序、快速排序等,通过将大问题分解为小问题来求解。 8. **搜索算法**:如广度优先搜索(BFS),常...
- **贪心算法**:每次选择当前最优解,逐步达到全局最优,如霍夫曼编码、Prim算法构造最小生成树等。 - **回溯法**:用于解决组合优化问题,如八皇后问题、N皇后问题、迷宫问题等。 - **图算法**:Dijkstra最短...