集合之HashMap、Hashtable
HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,
并允许使用 null 值和 null 键。
(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,
特别是它不保证该顺序恒久不变。
特点:
键无序,唯一,类似于Set集合
值有序,可重复,类似于List
底层数据结构是哈希表,保证键唯一
允许键为null,值为null
定义:
HashMap<String, Student> hm = new HashMap<>();
hm.put("208071701", new Student("208071701", "隔壁老王", 18, 80.0));
hm.put("208071702", new Student("208071702", "隔壁老李", 18, 81.0));
hm.put("208071703", new Student("208071703", "隔壁老周", 19, 19.0));
// double score = hm.get("208071703").getScore();
// System.out.println(score);
遍历:
for (String key : hm.keySet()) {
Student s = hm.get(key);
System.out.println(key + "|" + s.getName() + "|" + s.getAge() + "|" + s.getScore());
}
HashMap底层是哈希表结构
键如果是系统的类,一般都是重写hashCode和equals
如果是自己写的类作为键,需要自己重写hashCode和equals,否则键就不会去除重复元素
LinkedHashMap
底层数据结构是 链表和哈希表
链表保证键有序
哈希表保证键唯一
LinkedHashMap<String, String> lhm = new LinkedHashMap<>()
用法一样
hashtable
1是线程安全的,效率低
2.不允许存储null值和null键
最新文章
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
- linux-crontab定时任务
- sdn
- Navicat for mysql 远程连接 mySql数据库10061、1045错误
- Android中Activity的生命周期
- 对GitHub的认识
- Dynamics AX 中重点数据源方法
- object-c(oc)内存管理机制详解
- Build Firefox 编译Firefox
- C/C++基础概念
- mybatis小结
- day05(数字类型,字符串类型,列表类型)
- Vue插槽:(2.6.0以后版本弃用slot和slot-scope,改用v-slot)
- Docker介绍及常用操作演示(一)--技术流ken
- 如何把光盘制作成ISO镜像文件
- JAVA去重
- 恶性bug解决,Encoding 1252 data could not be found. Make sure you have correct international codeset assembly installed and enabled
- 老生常谈,HashMap的死循环(转)
- 打开所有https网页都提示证书错误
- javascript总结11:JavaScript的自增自减
热门文章
- 【Leetcode】【Medium】Triangle
- 【Leetcode】【Medium】Gas Station
- YII2.0安装教程,数据库配置前后台 [ 2.0 版本 ]
- tree结构统一修改属性名(递归)
- SharpZipLib压缩解压
- 笔记,记事软件(RedbookNote, lifeopraph)
- sublime text html5开发学习 插件篇记录
- sql语句的group by 与 inner join
- hdu-1395 2^x mod n = 1---求阶(欧拉函数)
- css 17课--