传统意义上的Hash表,是能以int 做值,将数据存放起来的数据结构。Java的Hash表可以以任何
实现了hash()函数的类的对象做值来存放对象。
Hash 表是非常有用的数据结构,熟悉它,充分使用它,往往能起到事半功倍的效果。
我们可能有一种需求,输入一个数字,然后给出对应的英文。
那么查找英文名称的程序我们应该怎么做呢?
首先,定义接口
给出一个数,返回一个名字
public class Number{
public String getName(int number){
switch(numebr){
case ……
}
return "";
}
}
当然我们可以用Switch, 但是太啰嗦了,我们能不能实现,今天有1,对应one ,明天有8对应eight
或者让 1 对应 eight , 8 对应 one .灵活对应呢?
数组可以吗?对应地址 ,放对应元素,不是很漂亮。
这里我们引入容器
HashMap<Interger, String> coinnames = new HashMap<Integer, String>();
我们放进去两个参数,第一个代表 “键”,第二个代表元素,一个键对应一个值
这个键值类型是 Interger ,是int的包裹类型,这时一个面向对象的程序,在这个容器里面,所有的东西必须是对象,而不能基本元素。一个包裹类型的变量可以直接接受它所对应的基础变量。
当我们调用存储
名称.put(键,"字符串");
public Coin(){
coinnames.put(1,"fashkhgfa");
coinnames.put(10,"fa4fhdfha");
coinnames.put(100,"fasgsgs55a");
}
然后成员函数,需要得到键值从而调用返回元素
public String getName(int number){
return coinnames.get(amount);
}
主函数里面进行创建对象调用
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int number = in.nextInt();
Coin coin = new Coin();
String name = coin.getName(amount);
System.out.println(name);
}
当我们输入对应的键值,就会输出我们想要的元素,但是如果我们的hash表里面没有呢,
我们可以改进一下做一个判断:
if(coinnames.containsKey(number))
return coinnames.get(number);
else
return "NOT FOUND";
注意:
●如果有添加重复的键值和元素,会取代那个元素
●如果想查看hash 里面有多少元素,
System.out.println(coinnames.keySet().size());
容器名.KeySet().size()
●想直接输出hash表
System.out.println(coinnames);
System.out.println(容器名);
结果:
{ 键值=元素,…………}
●遍历hash 表
通过键值赋值,然后调用输出
for(Integer k : coinnames.keySet()){
String s = coinnames.get(k);
System.out.println(s);
}
for(Integer k : 容器名.keySet()){
String 对象名 = 容器名.get(k);
System.out.println(对象名);
}
源代码:
import java.util.Scanner;
public class Coin{
private HashMap<Interger, String> coinnames = new HashMap<Integer, String>();
public Coin(){
coinnames.put(1,"fashkhgfa");
coinnames.put(10,"fa4fhdfha");
coinnames.put(100,"fasgsgs55a");
}
public String getName(int number){
if(coinnames.containsKey(number))
return coinnames.get(number);
else
return "NOT FOUND";
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int number = in.nextInt();
Coin coin = new Coin();
String name = coin.getName(number);
System.out.println(name);
}
}