Java的HashMap遍历方法

简介:

先来说下我在项目中发现的一个以前没有用过的东西request.getParameterMap()

request.getParameterMap()返回的值,是一个Map类型的,记录着所提交的请求中请求参数和请求参数值的映射关系。它的返回值有个特别之处——只能读。不像普通的map数据一样可以修改。这是因为服务器为了实现一定的安全规范,所作的限制,WebLogic,Tomcat,Resin,JBoss等服务器均实现了此规范。但是有必要在拿到此值做修改的话,要新建一个map对象,将返回值复制到此新map对象中进行修改,用新的map对象代替使用之前的返回值。

Map readOnlyMap = request.getParameterMap();

Map writeAbleMap = new HashMap();

writeAbleMap.putAll(readOnlyMap);

writeAbleMap.remove()或者put() 。。。在后续的程序代码中使用writeAbleMap即可。

另外,request.getParameterMap()返回值使用泛型时应该是Map<String,String[]>形式,因为有时像checkbox这样的组件会有一个name对应对个value的时候,所以该Map中键值对是“String-->String[]”的实现。

HashMap遍历

 
  1. public static void main(String[] args) { 
  2.     HashMap<String, String> hm = new HashMap<String, String>(); 
  3.     hm.put("100""001"); 
  4.     hm.put("200""002"); 
  5.     hm.put("300""003"); 
  6.     hm.put("400""004"); 
  7.     hm.put("500""005"); 
  8.     hm.put("600""006"); 
  9.     hm.put("700""007"); 
  10.     hm.put("800""008"); 
  11.     hm.put("900""009"); 
  12.     // System.out.println(hm.get("100")); 
  13.     // System.out.println(hm.size()); 
  14.  
  15.     // 第一种方法【推荐用这一种】 
  16.     Iterator<String> iterator = hm.keySet().iterator(); 
  17.     // keySetSet<K> 
  18.     // keySet()返回此映射中包含的键的 Set 视图。该 set 受映射支持, 
  19.     // 所以对映射的更改可在此 set 中反映出来,反之亦然。 
  20.     // 如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外), 
  21.     // 则迭代结果是不确定的。set 支持元素移除, 
  22.     // 通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 
  23.     // 操作可从映射中移除相应的映射关系。 
  24.     // 它不支持 add 或 addAll 操作。 
  25.     // 返回: 
  26.     // 此映射中包含的键的 set 视图 
  27.  
  28.     while (iterator.hasNext()) { 
  29.         System.out.println(hm.get(iterator.next())); 
  30.     } 
  31.  
  32.     // 第二种方法 
  33.     // Set set = hm.entrySet(); 
  34.     // entrySet 
  35.     // Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。 
  36.     // 该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。 
  37.     // 如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作, 
  38.     // 或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。 
  39.     // set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 
  40.     // 操作可从映射中移除相应的映射关系。 
  41.     // 它不支持 add 或 addAll 操作。 
  42.  
  43.     // 返回: 
  44.     // 此映射中包含的映射关系的 set 视图 
  45.     // java.util.Iterator it = hm.entrySet().iterator(); 
  46.     // while (it.hasNext()) { 
  47.     // java.util.Map.Entry entry = (java.util.Map.Entry) it.next(); 
  48.     // // entry.getKey() 返回与此项对应的键 
  49.     // // entry.getValue() 返回与此项对应的值 
  50.     // System.out.println(entry.getValue()); 
  51.     // } 

使用的时候,大家就可以把request.getParameterMap()转换成普通的HashMap来操作了。



本文转自shyy8712872 51CTO博客,原文链接:http://blog.51cto.com/shuyangyang/1031270,如需转载请自行联系原作者


相关文章
|
1天前
|
Java API
Java方法的优缺点
Java 方法是编程的基本构建块,具有代码重用性、模块化、易于调试、增强可读性、支持重载和可变参数、封装性及静态与实例方法的灵活性等优点,但也存在性能开销、过度抽象、限制使用环境、参数传递开销、命名冲突和堆栈溢出等缺点。合理设计方法可确保代码高效且易维护。
|
1天前
|
Java
Java的方法详解
在 Java 中,方法是执行特定任务的代码块,包括定义、参数传递、返回值处理及重载等功能。
|
10天前
|
Java
Java的方法详解
Java的方法是类中的重要组成部分,用于定义类的行为。方法可以接收参数、执行操作并返回结果。其基本语法包括返回类型、方法名、参数列表和方法体。方法支持重载,即同名但参数不同的多个方法;静态方法则直接通过类名调用,无需实例化。此外,Java还支持可变参数,允许方法接收不定数量的参数。通过访问修饰符如`public`、`protected`、`private`,可以控制方法的可见性。方法是实现类功能的基本单元,增强了程序的灵活性和复用性。
|
17天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
22天前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
28 5
|
24天前
|
安全 Java 开发者
【技术咖必看】Java异常处理新境界:throws关键字,打造万无一失的方法签名!
【技术咖必看】Java异常处理新境界:throws关键字,打造万无一失的方法签名!
32 3
|
24天前
|
安全 Java 程序员
【程序猿逆袭指南】Java高手的秘密武器:throws关键字,让你的方法签名霸气侧漏!
【程序猿逆袭指南】Java高手的秘密武器:throws关键字,让你的方法签名霸气侧漏!
15 3
|
8天前
|
JavaScript 前端开发 Java
通过JUnit5访问Java静态、私有、保护变量和方法
在《通过Gtest访问C++静态、私有、保护变量和方法》一文中介绍了如何通过Gtest访问C++静态、私有、保护变量和方法,本文介绍如何通过Junit5访问Java静态、私有、保护变量和方法。
13 0
|
21天前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
24 0
|
21天前
|
Java 开发者
探索Java中的Lambda表达式:简化代码的现代方法
【8月更文挑战第31天】Lambda表达式在Java 8中首次亮相,为Java开发者提供了一种更简洁、灵活的编程方式。它不仅减少了代码量,还提升了代码的可读性和可维护性。本文将通过实际示例,展示Lambda表达式如何简化集合操作和事件处理,同时探讨其对函数式编程范式的支持。