java中的Map的一些方法和TreeMap的使用

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();
   	}
}); 

最后我们再进行赋值,最后可以得到排序后的结果。

发布了6 篇原创文章 · 获赞 6 · 访问量 227

猜你喜欢

转载自blog.csdn.net/weixin_43932553/article/details/104503631