Map概述、HashMap概述、案例:在字典中添加内容并显示(在HashMap中插入字符串对象)、Map中获取key-value值的方法
Map概述
(1) Map中的数据是以键值对(key-value)的形式存储的
(2) key-value以Entry类型的对象实例存在
(3) 可以通过key值快速地查找value
(4) 一个映射不能包含重复的键,key的值不能重复,但是value的值可以重复,即一个value可以对应多个key
(5) 每个键最多只能映射到一个值
(6) 在java.util包中
HashMap特点
(1) 基于哈希表的Map接口的实现
(2) 允许使用null值和null键
(3) key值不允许重复
(4) HashMap中的Entry对象是无序排列的
案例:在字典中添加内容并显示(在HashMap中插入字符串对象)
功能描述
(1) 将单词以及单词的注释存储到HashMap中
(2) 显示HashMap中的内容
(3) 查找某个单词的注释并显示
添加数据
Map<key,value>
Map<String,String> animal=new HashMap<String,String>();
System.out.println("请输入三组单词对应的注释,并存放到HashMap中");
Scanner console=new Scanner(System.in);
//添加数据
int i=0;
while(i<3){
System.out.println("请输入key值(单词):");
String key=console.next();
System.out.println("请输入value值(注释):");
String value=console.next();
animal.put(key, value);
i++;
}
打印输出value的值(使用迭代器)
//打印输出value的值(直接使用迭代器)
System.out.println("使用迭代器输出所有的value:");
Iterator<String> it=animal.values().iterator();
while(it.hasNext()){
System.out.print(it.next()+" ");
}
System.out.println();
打印输出value的值(通过entrySet方法)
entrySet()方法:将HashMap中的键值对都放在entry的集合里面,这样就可以通过遍历entry这个集合取出数据。
//打印输出key和value的值
//通过entrySet方法
System.out.println("通过entrySet方法得到key-value:");
Set<Entry<String, String>> entrySet=animal.entrySet();
for(Entry<String, String> entry:entrySet){
System.out.print(entry.getKey()+"-");;
System.out.println(entry.getValue());
}
System.out.println();
注:Set<Entry<String,String>>
表示两个泛型,第一个泛型表示Set集合里面都是Entry类型的对象,第二个泛型表示Entry里面的<key,value>对象都是<String,String>类型的。
通过单词找到注释并输出(使用keySet方法)
//通过单词找到注释并输出
//使用keySet方法
System.out.println("请输入要查找的单词:");
String strSearch=console.next();
//1.取得keySet
Set<String> keySet=animal.keySet();
//2.遍历keySet
for(String key:keySet){
if(strSearch.equals(key)){
System.out.println("找到了!"+"键值对为:"+key+"-"+animal.get(key));
break;
}
}
在字典中添加内容并显示完整代码
package com.study.set;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class DictionaryDemo {
public static void main(String[] args) {
Map<String,String> animal=new HashMap<String,String>();
System.out.println("请输入三组单词对应的注释,并存放到HashMap中");
Scanner console=new Scanner(System.in);
//添加数据
int i=0;
while(i<3){
System.out.println("请输入key值(单词):");
String key=console.next();
System.out.println("请输入value值(注释):");
String value=console.next();
animal.put(key, value);
i++;
}
//打印输出value的值(直接使用迭代器)
System.out.println("*****************************************");
System.out.println("使用迭代器输出所有的value:");
Iterator<String> it=animal.values().iterator();
while(it.hasNext()){
System.out.print(it.next()+" ");
}
System.out.println();
System.out.println("*****************************************");
//打印输出key和value的值
//通过entrySet方法
System.out.println("通过entrySet方法得到key-value:");
Set<Entry<String, String>> entrySet=animal.entrySet();
for(Entry<String, String> entry:entrySet){
System.out.print(entry.getKey()+"-");;
System.out.println(entry.getValue());
}
System.out.println();
System.out.println("*****************************************");
//通过单词找到注释并输出
//使用keySet方法
System.out.println("请输入要查找的单词:");
String strSearch=console.next();
//1.取得keySet
Set<String> keySet=animal.keySet();
//2.遍历keySet
for(String key:keySet){
if(strSearch.equals(key)){
System.out.println("找到了!"+"键值对为:"+key+"-"+animal.get(key));
break;
}
}
}
}
运行结果:
请输入三组单词对应的注释,并存放到HashMap中
请输入key值(单词):
cat
请输入value值(注释):
猫
请输入key值(单词):
pig
请输入value值(注释):
猪
请输入key值(单词):
dog
请输入value值(注释):
狗
*****************************************
使用迭代器输出所有的value:
猫 狗 猪
*****************************************
通过entrySet方法得到key-value:
cat-猫
dog-狗
pig-猪
*****************************************
请输入要查找的单词:
pig
找到了!键值对为:pig-猪
Map中获取key-value值的方法
Map<K,V>集合是一种键值映射形式的集合。当调用`put(K key,V value)方法把数据存放到Map中后,那么如何把Map中的key值和value值取出来呢?都有哪几种取值的方法呢?下面就来一一介绍一下。
- 前置准备
以HashMap为例,先为map存几个数据,以便于后边对map的遍历取值。
- 获取Map的key-value值。
获取Map的key-value值分别有以下几种方式,使用时可以根据不同的场景,选择对应的取值方式。
方法一:
同时获取Map中的key值和value值。getKeyAndValue()
此方法通常用在要遍历展示这个map中所有的key和value
例如:
在主方法中调用这个获取key和value的方法:
控制台的显示如下:
方法二:
获取Map中的所有key值,以及通过key值获取对应的value值。getKeys()
此方法可以用在一些需要判断是否是指定key的情况下,获取该key对应的value。
例如:
在主方法中调用这个获取key的方法:
控制台显示如下:
方法三:
获取Map中的所有value值,此方法通常用于只想要展示或获取所有的value值的情况。getValues()