黑马程序员技术交流社区
标题:
求讲解:数据之间的映射关系
[打印本页]
作者:
人生无处不阳光
时间:
2013-12-18 19:16
标题:
求讲解:数据之间的映射关系
本帖最后由 人生无处不阳光 于 2013-12-19 00:28 编辑
在毕老师的视频中,讲到Map 集合时候,总是提到 数据之间的映射关系, 我实在不明白 什么叫映射关系??? 求讲解一下 谢谢大神们
比如 :有一道练习题 给一个字符串 asdfabsdfgasdesad 然后让你获取该字符串字母出现的次数
希望打印结果为: a(2) b(1) c(3) .....
作者:
代文娟
时间:
2013-12-18 19:27
Map集合中存的不是键值对吗,那么键值对之间应该是有一个关系的,要么为什么你可以通过键来获取它的值,通过值来获取键呢?实际上那个关系就相当于映射,你想想,你高中学数学函数时,不是就有一一映射,我就是按照数学中的一一映射来理解的。
作者:
刘松703
时间:
2013-12-18 20:18
映射说白了就是一一相对的关系把,就是根据一个条件可以找到一个确定的值,就像初中所学的函数,map里面有一个键值对,一个是标志,一个是数据,可根据得到标志来得到相应的数据
作者:
张天昊76
时间:
2013-12-18 20:56
就是意义对应的关系,通过一个值可以得到另一个的值。
对于那个小练习,我做了一个差不多的,就是结果打印的显示方式不同。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/*
* 要求:接收任意一串输入,统计每个字符出现的次数。count统计 rate频率
* 分析:实际上要我们统计的是两个量,一个是哪个字符出现过,还有就是它出现了几次,
* 而且这两个量是对应存在的,可以用map集合来解决此问题。字符做键,出现次数做值。
* 步骤:
* 1,接收控制台输入,遍历获取字符串单个字符 char charAt(int x)
* 2,创建HashMap的实例,在对字符串遍历中按条件将字符作为键存入集合中
* (1)判断单个字符是否在集合的键中存在,如果存在,将键值对应值+1 boolean containsKey(Object key)
* (2)如果不存在,将字符直接存入集合
*/
public class CountRate {
public static void main(String[] args) {
System.out.println("请输入:");
try {
show(getRate(getIn()));
} catch (IOException e) {
e.printStackTrace();
}
}
// 定义一个功能,获取控制台输入
static String getIn() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
// 此功能统计字符串中单个字符和出现的次数
static HashMap<Character, Integer> getRate(String str) {
// 创建一个HashMap集合
HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
// Integer num = hm.get(ch);
// hm.put(ch, num == null ? 1 : num + 1);
// 判断单个字符是否在集合的键中存在
if (!hm.containsKey(ch)) {
// 集合中的键上没有此字符
hm.put(ch, 1);
} else {
// 如果存在,在次存入,将键对应的值+1
hm.put(ch, hm.get(ch) + 1);
}
}
return hm;
}
// 用来显示出现过的字符和出现次数
static void show(HashMap<Character, Integer> hm) {
// 取元素keySet()
Set<Character> set = hm.keySet();
System.out.println("统计结果如下:");
// 遍历set集合,取出原来集合中的键
for (Iterator<Character> it = set.iterator(); it.hasNext();) {
char ch = it.next();
int rate = hm.get(ch);
System.out.println(ch + "出现了" + rate + "次。");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2