public class Pm {
/**
* Map<k,v>:映射,键值对
* 一个映射不能包含重复的值,每个键最多只能映射到一个值
* k--Key
* V--Value
* 1、containsKey(Object key) 查询是否含有该键
* 2、containValue(Object value)查询是否含有该值
* 3、get(Object key)通过键查询值
* 4、put(k key,V Value)添加
* 5、putAll(Map<? extends k,? extends V> m) 添加
* 6、V remove(Object key) 删除映射的同时会拿到该映射的Value值
* 7、Collection<V> values() 拿到由该Map中的值所组成的集合
* 8、replcae(K key , V value) 修改该映射
*
*
* Map
* |---HashMap:底层是哈希表,null可以作为键或值,是线程不同步(运行效率高)
* |---TreeMap:底层是二叉树结构,会进行一个排序,是线程不同步的(运行效率高)
* |---HashTable:底层是哈希表,null不能作为键或者值,是线程同步的(运行效率低)
*
* 需求:遍历一个HashMap
* 特殊方法:
* 1、Set<> keySet() 将map中所有的键取出并存入一个Set集合中
* 2、Set<Map.Entry<K,V> entrySet() 将map中的映射关系取出并存入一个set集合中
* Map.Entry<K,V>值得是一组键值对
*
* map是如何保证唯一性的:通过hashCode()和equals()两个方法同时的决定
* 需求:有5个学生,将学会的姓名(String name)、地址(String address)存放进map中,形成映射
* 当学生的姓名年龄同时相等时,这时同一个学生,不存
*
* 当自己创建的类生成的对象生成的key作为存放进map的时候,需要重写hashCode()和equals()方法
* 指定规则:什么时候键重复
*/
public static void main(String[] args) {
Map<String,String> map=new HashMap<String, String>();
//map保证唯一性前提是会对Key进行是否存在的判断,而后决定是先移除再添加还是直接添加
map.put("abc", "学生");
map.put("abc", "老师");
map.replace("abc", "工人");
map.put("abc1", "1");
map.put("abc2", "2");
map.put("abc3", "3");
map.put("abc4", "4");
//keySet
/*Set<String> set=map.keySet();
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()) {
String key=iterator.next();
System.out.println(key+"对应"+map.get(key));
}*/
//entrySet()
Set<Map.Entry<String, String>> set=map.entrySet();
Iterator<Map.Entry<String, String>> iterator=set.iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry=iterator.next();
System.out.println(entry.getKey()+"对应"+entry.getValue());
}
}
}
java基础之Map集合的使用
最新推荐文章于 2025-07-23 21:20:37 发布
