一、Map<String,Object>
String:key的类型
Object:value的类型,value可能是String,或者int类型,什么类型都可以
对于Map接口来说,本身不能直接迭代输出,因为Map的每个位置存放的是一对值(key,value),迭代每次只能输出一个值
需要先取到key的集合,再根据key迭代输出value
迭代方法:
1、foreach
public static void main(String[] args) { String a="aaa"; int b=10; Map<String,Object> map=new HashMap<String, Object>() ; map.put("a",a); map.put("b", b); //1、keySet() Set<String> set=map.keySet(); for(String key:set) { System.out.println(key+":"+map.get(key)); } //2、entrySet() Set<Entry<String,Object>> entries =map.entrySet(); for(Entry<String,Object> entry:entries ){ System.out.println(entry.getKey()+":"+entry.getValue()); } }
2、Iterator(推荐)
Map<String,String> map=new HashMap<String,String>(); map.put("mldn","www.mldn.com"); map.put("java","www.java.com"); Set<String> keys=map.keySet(); Iterator<String> iter=keys.iterator(); while(iter.hasNext()) { System.out.println(iter.next().getKey()); }
keySet():遍历Map key-value比较习惯的方式是先获取Map中的所有key值,然后根据key,依次从Map中去数据
EntrySet():Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<Map.Entry<K, V>> entrySet()方法。
也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry
二、List<Map<String,Object>>
public static void main(String[] args) { List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();//List集合中存放Map集合 Map<String,Object> map=new HashMap<String,Object>();//定义一个Map集合 map.put("1","wang");//这个Map集合放进去一个<key,value>对 map.put("2", "xiao");//这个Map集合又放进去一个<key,value>对 map.put("3", "dong"); map.put("4", "haha");//这个Map集合共有4个<key,value>对 list.add(map);//将这一条map集合放进List集合里 for(Map<String,Object> m:list){ //取list集合里的那一条Map集合 for(String s:m.keySet()){ //取map集合里的String类型的key, System.out.println(m.get(s));//根据key迭代输出value } } }
下面是list集合里的那一条map集合,里面4个<key,value>对
参考:
http://blog.csdn.net/ipolaris/article/details/8930599
http://blog.csdn.net/zhuanshenweiliu/article/details/9180975
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了