Map 映射
在之前我们学习散列表的时候我们就接触过了映射,这里我们要讲的是一种类似的数据结构。
map 是一个关联容器,它提供一对一的 hash。
第一个可以称为关键字(key),每个关键字只能在 map 中出现一次
第二个可能称为该关键字的值(value)
map 以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map 主要用于资料一对一映射(one-to-one)的情況,map 在 C++ 的內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在 map 内部所有的数据都是有序的。
比如,像是管理班级内的学生,Key 值为学号,Value 放其他信息的结构体或者类。
这里我们讲的是排序的 map 还有不排序的 map,java 里面叫 hashmap
Map m1 = new TreeMap();
《弗里石的的语言》
小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。
有重复就输出重复单词,重复就输出 NO,多个重复输出最先出现的哪一个。
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
static Map mp=new TreeMap();
public static void main(String[] args)
{
int n;
boolean flag=false;
Scanner in=new Scanner(System.in);
String ans="NO";
n=in.nextInt();
for(int i=0;i<n;i++)
{
String word;
word=in.next();
// System.out.println(Hx(word));
if(flag) continue;
if(mp.containsKey(word)){
flag=true;
ans=word;
}
else {
mp.put(word,true);
}
}
System.out.println(ans);
}
}