Map
1.特点
Map中的键和值一一映射,我们可以通过键来获得对应的值。同时,Map中的键必须保持唯一性,值则无此要求。
2. Map<K, V>双边队列方法
增:
put(K k, V v);
向队列中存入键值对,K 和 V 都要符合泛型约束
putAll(Map<? extends K, ? extends V> map);
存入另一个双边队列并要求添加的双边的 K 和 V 都要和当前存储的 K 和 V 一致
【补充】<? ectends K> 要求的类型是 K 本身或者 K 的子类
删:
remove(Object k)
删除对应键的Value
改:
put(K k, V v);
若 k 值已经存在,则将原本的 value 值替换成当前的 v 值
查:
int size();
当前双边队列中有效键值对的长度
boolean isEmpty();
判断当前双边队列是否为空
Set< K> keySet();
返回整个Map队列中所有键所对应的Set集合
Collection< V> values();
返回整个Map队列中所有值对应的Collection集合
3. EntrySet重点
定义在Map类中(内部类)
class Entry<K, V> { K k; V v; }
Map中提供了一个方法:
Set<Entry<K, V> entrySet> //其返回值为键值对的set集合对象
4. TreeMap<K, V> 与 Comparable 和 Comparator 的使用
首先我们要注意到底使用Comparable还是Comparator,这俩都可以为TreeMap添加比较方式,但实现的方式不同。
4.1 Comparable的使用
我们需要在对应的实体类中遵从Comparable接口
public class Dog implements Comparable<Dog>{
//成员变量
//成员方法
@Override
public int compareTo(Dog o) {
// 一定要重写此方法,在此处进行数值的比较
return o1.getAge() - o2.getAge();
}
}
此时我们可以对TreeMap进行初始化,赋值,最后自动得出排序后的内容
TreeMap<Dog,String> map = new TreeMap<Dog, String>();
/*
map2.put(new Dog("王可可", 1), "111");
map2.put(new Dog("八公", 2), "111");
map2.put(new Dog("豆豆", 3), "111");
map2.put(new Dog("老黄", 4), "111");
map2.put(new Dog("旺财", 5), "111");
System.out.println(map2);
*/
4.2 Comparator
第二种我们可以直接通过匿名内部类的方式来实现对应的CompareTo方法,使用此方式我们不需要对实体类Dog进行任何修改。
TreeMap<Dog,String> map2 = new TreeMap<Dog, String>(new Comparator<Dog>({
@Override
public int compare(Dog o1, Dog o2) {
return o1.getAge() - o2.getAge();
}
});
最后我们再进行赋值,最后可以得到排序后的结果。