一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情。
Java中的Map接口及实现类
需要:掌握Map接口及其实现类的特点及相关方法的用法。
Map集合的主要功能:
1:添加功能
V put(K key,V value):添加元素。
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存储,就用值把以前的值替换掉,返回以前的值
2:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
3:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
4:获取功能
Set<Map.Entry<K,V>> entrySet():???
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
5:长度功能
int size():返回集合中的键值对的对数
Map集合元素遍历的方式:
思路:
(1):
A:获取所有的键
B:遍历键的集合,获取得到每一个键
C:根据键去找值
(2):
A:获取所有键值对对象的集合
B:遍历键值对对象的集合,得到每一个键值对对象
C:根据键值对对象获取键和值
HashMap集合:
HashMap:是基于哈希表的Map接口实现。
哈希表的作用是用来保证键的唯一性的。
HashMap<String,String>:键:String 值:String
观察键值重复对象的加入情况:覆盖
HashMap集合存储自定义对象,并保证元素的唯一性:
HashMap<c1,String>: 键:c1 值:String
要求:如果两个对象的成员变量值都相同,则为同一个对象。
重写equals()和hashCode()
TreeMap集合:
TreeMap:是基于红黑树的Map接口的实现。
HashMap<String,String>:键:String 值:String
自然排序:
Comparable 接口中只提供了一个方法: compareTo(Object obj) ,该方法的返回值是 int 。如果返回值为正数,则表示当前对象(调用该方法的对象)比 obj 对象“大”;反之“小”;如果为零的话,则表示两对象相等。
使用TreeSet自然排序法时需要实现Comparable接口,并将泛型注为当前对象类,然后重写compareTo()方法。
关于compareTo方法的使用方法:
@override
public int compareTo(类名 形参){
return 形参.返回int类型的方法 - this.与前面相同的方法;
//从大到小排序。若从小到大只需交换减数与被减数
}
比较器排序:
要点:使用TreeSet比较器排序法时不需要实现Comparable接口,只在新建TreeSet时使用匿名内部类重写compareTo方法即可。当对象类为Java内部类或其他没有修改权限的类时可以使用此方法。效果与自然排序相同。在重写compareTo方法时要注意两个形参属性相减的顺序。
c1 = new TreeSet (new Comparator(){
//使用匿名内部类
@Override
public int compare(c1 o1, c1 o2) {
return o1.get() - o2.get();
}
});