Map接口:
1.Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value
2.Map中的键值对以Entry类型的对象实例形式存在
3.键(key值)不可重复,value值可以
4.每个键最多只能映射到一个值
5.Map支持泛型,形式如:Map<K,V>
往Map中添加键值对的映射:put(K,V); 删除:remove(K);
通过以下三种方法会方便遍历Map中的元素:
返回key值的集合:keySet();
返回value值的集合:values();
返回键值对的集合:entrySet();
HashMap类:
1.HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
2.HashMap中的Entry对象是无序排列的
3.key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)
Hash表是一种数据结构,在这种数据结构里所有的东西是以一对值放进去的,一个叫做key,就是键,一个叫做value,叫做值,放在Hash表里的东西都是由一个key和一个value放进去的
Hash表一个容器,在Hash表里所有类型必须是一个对象,而不能是基本元素,int,float,double都不行,String可以,Integer可以(Integer是int的包裹类)
put(1 , " penny " ) ; //第一个位置直接写数字(因为一个包裹类型的变量可以直接接收它所对应的基础类型的变量)
例:
1 package hashjihe; 2 3 import java.util.HashMap; 4 import java.util.Scanner; 5 6 public class Coin{ 7 private HashMap<Integer,String> coinnames = new HashMap<Integer,String>(); 8 public Coin(){ 9 coinnames.put(1,"penny"); 10 coinnames.put(10,"dime"); 11 coinnames.put(23,"quarter"); 12 //对于Hash表来说,键一定是唯一的,如果同一个键放进多次,那么输出的都是最后那一个 13 coinnames.put(50,"half-dalar"); 14 coinnames.put(50,"五毛"); 15 coinnames.put(50,"毛五"); 16 System.out.println(coinnames.keySet().size()); //4 17 System.out.println(coinnames); //{1=penny, 50=毛五, 25=quarter, 10=dime} 18 System.out.println("==========="); 19 //遍历 20 for(Integer k:coinnames.keySet()){ 21 System.out.println(coinnames.get(k)); //penny 毛五 quarter dime(按照ASCII码的排列顺序) 22 } 23 } 24 25 public String getName(int amount){ 26 if(coinnames.containKey(amount)){ //containsKey():如果此映射包含对于指定键的映射关系,则返回true 27 return coinnames.get(amount); 28 }else{ 29 return "Not Found"; 30 } 31 } 32 33 public static void main( String[] args ){ 34 Scanner sc = new Scanner( System.in ); 35 System.out.println("输出一个数:"); //输入了数字50 36 int a = sc.nextInt(); 37 Coin c = new Coin(); 38 System.out.println(c.getName(a)); //毛五 39 } 40 }