Hash表(java)

Hash表(java)

Hash表是一种数据结构,所有的东西都是以一对值放进去的
第一个是key(键),另一个是value(值)
“键” 指向 “值”;

例如

1美分用penny来表示;
10美分用dime来表示;
25美分用quarter来表示;
50美分用harf-dolar来表示;
当我们想通过输入美分的数量来获取它的名称时
除了用 if 语句 switch 语句这种硬编码较多的方法之外
我们还可以采用Hash表来实现,如下

package b.others;

import java.util.HashMap;
import java.util.Scanner;

public class HashBiao {
    
    
    private HashMap<Integer,String> coinnames=new HashMap<Integer,String>();
    //Integer是key,String是Key所代表的东西,Integer不能用int代替,因为这里面必须为包裹类型,
    public HashBiao(){
    
    //方法
        coinnames.put(1,"penny");//1为键,penny为值;
        coinnames.put(10,"dime");
        coinnames.put(25,"quarter");
        coinnames.put(50,"harf-dolar");
    }
    public String getName(int amount){
    
    
        return coinnames.get(amount);
    }
    public static void main(String[] args){
    
    
        Scanner in=new Scanner(System.in);
        int amount=in.nextInt();
        //若输入15,15不是Hash表中的key,则输出null表示不存在;
        HashBiao coin=new HashBiao();
        String name= coin.getName(amount);
        System.out.println(name);
    }
}

  1. 若我们添加两个相同的key,但是不同的值,只有最后面的那一个有效(下面代码有测试)
  2. 并且我们不想让输入不存在的key时出现null,而是出现NOT FOUNTD
  3. 输出表中key与valu相对应的所有内容
  4. 只只遍历valu的值
    加工代码如下
package b.others;

import java.util.HashMap;
import java.util.Scanner;

public class HashBiao {
    
    
    private HashMap<Integer,String> coinnames=new HashMap<Integer,String>();
    public HashBiao(){
    
    //方法
        coinnames.put(1,"penny");
        coinnames.put(10,"dime");
        coinnames.put(25,"quarter");
        coinnames.put(50,"harf-dolar");
        coinnames.put(50,"5毛");
        System.out.println(coinnames.keySet().size());
        //coinnames.keySet()是告诉你所有的key,coinnames.keySet().size()是用来告诉你所有的key的个数;
        //若再次输入与之前相同的key(就是这里的50),则在输出的时候,会取后面输入语句的值,并不会都输出,若输入50,则会输出“5毛”了
        // 遇到相同的key,只有最后面的那一个有效,所以虽然上述有五组值,而有效的只有四组
        System.out.println(coinnames);//可以直接输出表里面的内容,并且是一对一对出现的;
        for(Integer k:coinnames.keySet())//利用for-each遍历key
        {
    
    
            String s=coinnames.get(k);//再利用get方法来得到value,实现最终遍历表中所有值的目的
            System.out.println(s);
        }
    }
    public String getName(int amount){
    
    
        if (coinnames.containsKey(amount))//判断key是否存在;
        {
    
    
            return coinnames.get(amount);//存在时,返回对应的value值
        }
        else
        {
    
    
            return "NOT FOUND";//不存在时,则输出NOT FOUND;
        }

    }
    public static void main(String[] args){
    
    
        Scanner in=new Scanner(System.in);
        HashBiao coin=new HashBiao();
        int amount=in.nextInt();
        String name= coin.getName(amount);
        System.out.println(name);
    }
}

最终结果

4
{1=penny, 50=5毛, 25=quarter, 10=dime}
penny
5毛
quarter
dime
请输入你要查询的值:
(这里输入了)10
dime

结尾

希望对大家有帮助!!!
有问题可在下面留言,谢谢…

猜你喜欢

转载自blog.csdn.net/weixin_53777651/article/details/123096841