大家好,又见面了,我是你们的朋友全栈君。
java基础是关键,当你掌握一定的知识量的时候,但感觉其实还是基础是关键,很多框架都是固定的,只要掌握框架的配置,再加基础,相信你也就可以入这行了。选择有很多,要么及早的地放弃,不要浪费青春时光与金钱,要么坚持不放弃,一直干下去….失败不可怕,可怕的是不敢面对失败。好了,加油!!!引导语,就简单的说到这里。
Map概念
Map集合的特点,如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
- Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
- Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
- Collection中的集合称为单列集合,Map中的集合称为双列集合。
- 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
- Map中常用的集合为HashMap集合、LinkedHashMap集合。Hashtable也是Map集合的一种已被HashMap取代。
Map接口中常用集合概述
通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。
- HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
- LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构 链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
- 注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。
1.1.3 Map的常用方法
Map(HashMap)的使用:创建对象时加入两个泛型。
Map<k,v>
key – 此映射所维护的键的类型
value – 映射值的类型
- put方法:将指定的键与值对应起来,并添加到集合中
- 方法返回值为键所对应的值
使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;
使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。
- get方法:获取指定键(key)所对应的值(value)
- remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。
简单的map集合的Put方法实例代码,供新手练习参考使用:
代码语言:javascript复制package cn.map2;
import java.util.HashMap;
import java.util.Map;
public class MapDemo1 {
public static void main(String[] args) {
//创建一个hashMap集合
Map<String, String> map1 = new HashMap<String,String>();
map1.put("小明", "我是湖南人");
map1.put("小红", "我是湖北人");
map1.put("小李", "我是北京人");
map1.put("小东", "我是上海人");
System.out.println(map1);
String value=map1.remove("小东");
System.out.println(value);
System.out.println(map1);
}
}
以上输出结果 为:
{小李=我是北京人, 小明=我是湖南人, 小东=我是上海人, 小红=我是湖北人} 我是上海人 {小李=我是北京人, 小明=我是湖南人, 小红=我是湖北人}
简单的map集合的Put方法实例代码2,供新手练习参考使用:
代码语言:javascript复制package cn.map2;
import java.util.HashMap;
import java.util.Map;
public class Demo2 {
public static void main(String[] args) {
//创建HashMap集合对象
Map<String,String> map1 = new HashMap<String,String>();
//添加元素
map1.put("张三", "美国人");
map1.put("李四", "英国人");
map1.put("王五", "日本人");
map1.put("赵六", "中国人");
String a = map1.put("张三", "中国人"); // 如果键 重复了, 值会被替换.
System.out.println(a);
System.out.println(map1);
}
}
以上输出结果:
美国人 {赵六=中国人, 张三=中国人, 李四=英国人, 王五=日本人}
简单的map集合的Get方法实例代码3,供新手练习参考使用:
代码语言:javascript复制package cn.map2;
import java.util.HashMap;
import java.util.Map;
public class Demo3 {
public static void main(String[] args) {
// 创建 person 对象
Map<String, String> person = new HashMap<>();
// 添加 元素 put 方法
person.put("唐三藏", "师傅"); //
person.put("孙悟空", "大师兄"); //
person.put("猪八戒", "二师兄");
person.put("沙悟净", "三师弟");
person.put("白龙马", "四师弟");
//get值
String value = person.get("唐三藏");
System.out.println("唐三藏的值value1=" value);
String value2 = person.get("孙悟空");
System.out.println("孙悟空的值value2=" value2);
String value3 = person.get("沙悟净");
System.out.println("沙悟净的值value3=" value3);
}
}
输出结果是:
唐三藏的值value1=师傅 孙悟空的值value2=大师兄 沙悟净的值value3=三师弟
其他方法:
- void clear() 从此映射中移除所有映射关系(可选操作)。
- boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
- boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
- boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。
- V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
- int size() 返回此映射中的键-值映射关系数。
简单的map集合的其他方法实例代码4,供新手练习参考使用:
代码语言:javascript复制package cn.map2;
import java.util.HashMap;
/*
* 其他方法
void clear() 从此映射中移除所有映射关系(可选操作)。
boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。
V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
int size() 返回此映射中的键-值映射关系数。
*/
public class Demo4 {
public static void main(String[] args) {
//创建hashMap
HashMap<String, String> hashMap = new HashMap<>();
// 保存角色名字和书名.
hashMap.put("东方不败", "<<笑傲江湖>>");
hashMap.put("岳不群", "<<笑傲江湖>>");
hashMap.put("林平之", "<<笑傲江湖>>");
hashMap.put("乔峰", "<<天龙八部>>");
hashMap.put("段誉", "<<天龙八部>>");
hashMap.put("虚竹", "<<天龙八部>>");
System.out.println(hashMap.containsKey("乔峰"));
System.out.println(hashMap.containsKey("梅超风"));
System.out.println("=======");
System.out.println(hashMap.isEmpty());
//hashMap.clear();
// System.out.println(hashMap);
String remove = hashMap.remove("乔峰");
System.out.println(remove);
System.out.println(hashMap);
}
}
以上输出结果:
true false ======= false <<天龙八部>> {林平之=<<笑傲江湖>>, 虚竹=<<天龙八部>>, 岳不群=<<笑傲江湖>>, 段誉=<<天龙八部>>, 东方不败=<<笑傲江湖>>}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139288.html原文链接:https://javaforall.cn