集合—HashMap
HashMap(键值对存储)
HashMap是一种哈希表,哈希表也叫散列表,是一种神奇的结构,最大的特点就是快。它的结构有很多种,最流行、最容易理解的是:顺序表+链表的结构。主结构是长度可以动态变化的顺序表,每个顺序表的节点可以单独引出一个链表。
HashMap是一个集合,键值对的集合,源码中每个节点用Node<K,V>表示
一、存储数据,put方法
HashMap<Integer,String> hashMap = new HashMap<Integer,String>(); hashMap.put(1,"HH"); hashMap.put(2,"DD"); hashMap.put(3,"ZZ"); System.out.println(hashMap); //输出{1=HH, 2=DD, 3=ZZ}
同时在使用put存储一遍相同key不同vaue的值,上一次被赋值的会被覆盖例
hashMap.put(3,"LL"); System.out.println(hashMap); //这时候输出{1=HH, 2=DD, 3=LL}
二、获取数据get方法,直接填写相应的key就可以获取对应的value值
System.out.println(hashMap.get(1)); System.out.println(hashMap.get(2)); //输出HH DD
三、删除remove方法
hashMap.remove(3);//删除了key为3的值,即删除了LL System.out.println(hashMap); //输出{1=HH, 2=DD}
四、size方法和isEmpty方法,values方法
//查看集合中的元素个数,这里的元素是指键值对,一对为一个元素 System.out.println(hashMap.size()); //判断集合是否为空 System.out.println(hashMap.isEmpty()); //输出集合中所有的value值 System.out.println(hashMap.values()); //输出 2 false [HH, DD]
五、循环遍历数组
1.keySet方法
Set<Integer> keySet = hashMap.keySet(); Iterator<Integer> iterator = keySet.iterator(); while(iterator.hasNext()) { Integer key = iterator.next(); String value = hashMap.get(key); System.out.println(key+"="+value); } //输出1=HH 2=DD
2.entrySet方法
Set<Entry<Integer,String>> entrySet = hashMap.entrySet(); for (Entry<Integer, String> entry : entrySet) { System.out.println(entry.getKey()+"="+entry.getValue()); } //输出1=HH 2=DD
六、集合常见问题
1、ArrayList和LinkedList有何区别?
ArrayList是基于动态数组的数据结构,LinkedList是基于链表的数据结构;对于随机访问get和set,ArrayList较优,因为LinkedList要移动指针;对于新增和删除操作add和remove,LinkedList较优,因为ArrayList要移动数据。
2.HashMap和HashTable区别?
2.1HashMap允许空键值,Hashtable不允许;
2.2HashMap继承AbstractMap,HashTable继承Dictionary类,两者都实现了Map接口;
2.3HashMap的方法不是同步的,Hashtable的方法使同步的
3.Iterater和Listlterator之间有什么区别?
3.1Iterater用来遍历Set集合和List集合,而Listlterator只能遍历List;
3.2Iterater只可以向前遍历,而Listlterator可以双向遍历;
3.3Listlterator从Iterator接口继承,然后添加一些额外的功能,比如添加一个元素,替换一个元素,获取前面或后面元素的索引位置;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!