【Java】—Map体系集合:HashMap、LinkerHashMap、TreeMap、Properties
文章目录
一、HashMap
1.1 概念:
HashMap,是Map接口的实现类之一,存储结构为哈希表
。
特点:
- 线程不安全。
- 根据键的hash值计算位置,如果此位置没有元素,直接加入;若有元素,判断键是否相等(equals),若不相等,与其顺延,形成链表结构;若相等,拒绝其加入。
- 使用无参构造方法创建HashMap时,加载因子为0.75。
- 当添加第一个元素后,容量调整为16。
- 当元素个数大于12时,会进行扩容,扩容后大小为原来的两倍。
- JDK1.8以前,链表是头插入,JDK1.8以后是尾插入。
- JDK1.8:当红黑树节点小于等于6时,调整成链表。
如果想要了解什么是哈希表,请移步:【Java】—Collection体系集合:Set、HashSet、TreeSet详解
由于HashMap是具体类,可直接创建对象:
HashMap map = new HashMap();
HashSet内部调用的是HashMap。
二、LinkedHashMap
2.1 概念
LinkedHashMap,是Map接口的实现类之一,存储结构为双向链表
。
三、TreeMap
3.1 概念
TreeMap,是Map接口的实现类之一,存储结构为红黑树
。
如果想了解TreeSet以及红黑树是什么,请移步:【Java】—Collection体系集合:Set、HashSet、TreeSet详解
由于TreeMap是具体类,可直接创建对象:
TreeMap map = new TreeMap();
TreeMap对象需要比较规则,如果想要了解规则,请移步:【Java】—Collection体系集合:Set、HashSet、TreeSet详解
TreeSet内部调用的就是TreeMap。
四、Properties
4.1 概念
Properties,是Map接口的实现类:Hashtable的继承者,
特点:
- 键和值都是String类型数据
- 和IO流有关系
由于Properties是具体类,所以可以直接创建对象:
Properties map = new Properties();
4.2 独有方法
4.2.1 setProperty(String 键,String 值);
作用:在集合中添加键值对,如果键相同则覆盖。
代码演示:
Properties map = new Properties();
map.setProperty("1","张三");
map.setProperty("2","李四");
map.setProperty("3","王五");
System.out.println(map);
map.setProperty("2","赵六");//键相同,覆盖原先元素
System.out.println(map);
运行结果
{3=王五, 2=李四, 1=张三}
{3=王五, 2=赵六, 1=张三}
4.2.2 stringPropertyNames()
作用:返回键的Set集合
返回值类型:Set
代码演示:
Properties map = new Properties();
map.setProperty("1","苹果");
map.setProperty("2","香蕉");
map.setProperty("3","哈密瓜");
System.out.println(map.stringPropertyNames());//返回键的Set集合
Set set = map.stringPropertyNames();//也可以通过Set对象接收
System.out.println(set);
运行结果
[3, 2, 1]
[3, 2, 1]
4.2.3 getProperty(String 键)
作用:通过键,返回集合中键所对应的值,如果没有则返回null
返回值类型:String
代码演示:
Properties map = new Properties();
map.setProperty("1","手机");
map.setProperty("2","电脑");
map.setProperty("3","平板");
System.out.println(map.getProperty("3"));
System.out.println(map.getProperty("4"));
运行结果:
平板
null
总结
内容不是很多,主要讲解了Properties及其方法。