Java基础知识章节梳理(十八)
文字数:约2000字 阅读时间:35分钟
此文章为学习总结类型,文字很多且皆为基础知识
一. Map 接口
1. Map集合概述
1.1 概念
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值
1.2 映射
一一对应(一个键对应一个值)
1.3 特点
1) map集合中的键不允许重复
2) 每个键最多只能映射一个值
3) NULL可以作为键也可以作为值
4) Map集合存的值都是以键值对的形式存在,因此创建对象的时候,需要传递两个泛型的值
1.4 Map与Collection的区别
1.4.1 Collection
1) Collection 中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
2) Collection 中的集合称为单列集合
1.4.2 Map
1) Map 中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值组成,通过键可以找所对应的值
2) Map 中的集合称为双列集合
2. Map常用子类集合
2.1 HashMap 集合
2.1.1 介绍
1) 存储数据采用的哈希表结构,元素的存取顺序不能保证一致。
2) 由于要保证键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。
2.1.2 构造方法
1) HashMap() :构造一个空 HashMap。
2) HashMap(Map<? extends K,? extends V> m) : 构造一个映射关系与指定 Map 相同的新 HashMap
2.1.3 常用方法
1) put(K key, V value)
将指定的key和对应的value保存到map集合中,使用 put 方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并使用新的键值覆盖原来的
2) remove(Object key)
根据指定的键(key)删除元素,返回被删除元素的值(value)
3) get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
4) containsValue(Object value)
判断集合中有没有包含指定的value值
5) containsKey(Object key)
判断集合中有没有包含指定的key值
6) size()
返回此映射中的键-值映射关系数。(集合的长度)
2.1.4 HashMap 存储自定义类型键值
1) 如果自定义对象作为 key 存在,这时要保证对象唯一,必须复写对象的 hashCode 和 equals 方法
2) 如果要保证 map 中存放的 key 和取出的顺序一致,可以使用 LinkedHashMap 集合来存放。
2.2 LinkedHashMap 集合
2.2.1 介绍
1) 属于HashMap的子类
2) 存储数据采用的哈希表结构+链表结构。
a. 通过链表结构可以保证元素的存取顺序一致;
b. 通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。
2.2.2 构造方法
1) LinkedHashMap()
构造一个空的有插入顺序 LinkedHashMap 实例。
2) LinkedHashMap(Map<? extends K,? extends V> m)
构造一个映射关系与指定映射相同的插入顺序 LinkedHashMap 实例。
2.2.3 常用方法:参考HashMap
2.3 HashMap 集合遍历方法
2.3.1 键找值
1) 面向map集合对象,获取 Map 集合中所有的键组成的一个单列集合,这个集合是set(map的keySet方法)
2) 遍历键的 Set 集合,得到每一个键(增强for或迭代器)
3) 面向map集合根据每一个键,从map中获取键所对应的value值(map的get方法)
4) 涉及到的方法
keySet() 方法:返回此映射中所包含的键的 Set 视图。(返回一个键的Set集合)
2.3.2 Entry 键值对--对象
1) 概述
a. Entry 将键值对的对应关系封装成了对象。即键值对对象,
b. Entry 是 Map 接口中提供的一个静态内部嵌套接口。
2) 步骤
1.面向map集合获取所有的键值对对象组成的一个set集合(Map的entryset方法)
2.使用增强for获取每一个键值对对象
3.面向键值对对象分别获取key和value(Entry的getkey和getvalue方法)
2.3.3 涉及到的方法
1) entrySet()
返回此映射中包含的映射关系的 Set 视图。
2) getKey()
返回与此项对应的键。
3) getValue()
返回与此项对应的值。
2.4 注意
1) Map 接口中的集合都有两个泛型变量<K,V>,使用时需要赋予数据类型
2) 两个泛型变量<K,V>的数据类型可以相同,也可以不同。
二. properties
1. 介绍
1.1 概念
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
1.2 特点
1.属于双列集合
2.没有泛型,里面键与值的数据类型都是String
3.有与IO流相互结合的方法,可以将集合中的数据保存到硬盘上,也可以从硬盘上将数据读取到集合中
4.Propeties是hashTable的子类,是map的孙子类,map中的方法,proties都可以直接使用,但是不建议使用,建议使用propeties特有的方法
1.3 构造方法
1) Properties()
创建一个无默认值的空属性列表。
2) Properties(Properties defaults)
创建一个带有指定默认值的空属性列表。
1.4 常用方法
1) setProperty(String key, String value)
调用 Hashtable 的方法 put。(存值的方法)
3) getProperty(String key)
用指定的键在此属性列表中搜索属性。
4) stringPropertyNames()
返回此属性列表中的键集
1.5 properties与IO流相结合的方法
1) store(Writer writer, String comments)
以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
2) load(Reader reader)
按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
(记住properties也是一个双列集合,方便用于配置文件读取,文件名为*.properties就可以通过这个类进行读取。例如使用数据库时编写的工具类就可以用到这个。)
三. 可变参数
1. 概述
1) 可变参数的实质就是一个数组,可以使用操作数组的方式来操作可变参数
2) 可变参数只允许在方法的形式参数列表中使用
2. 格式
1) 修饰符 返回值类型 方法名(参数类型... 参数名){ }
2) 此时的参数名就是一个数组
3. 注意事项
1) 可变参数是JDK1.5之后出现的新特性
2) 可变参数的实质就是数组,不能与数组的方法形成重载
3) 如果参数列表出现多个形参时,那么可变参数必须放在最后面
4. 好处
对于方法的调用者可以传递任意多个参数!!!
(一定要放到参数类型的尾部)
四. Collections 集合工具类
1. 介绍
专门操作Collection集合体系的工具类,里面包含的全部都是静态方法
2. 常用方法
1) shuffle(List<?> list)
使用默认随机源对指定列表进行置换
2) sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序。
3) max(Collection<? extends T> coll)
根据元素的自然顺序,返回给定 collection 的最大元素。
4) min(Collection<? extends T> coll)
根据元素的自然顺序 返回给定 collection 的最小元素。