欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java HashMap详解及实例代码

程序员文章站 2024-03-08 13:45:52
java hashmap /* * map集合的特点 * 将键映射值的对象,一个映射不能包含重复的值;每个键最多只能映射到一个值 * * map集合和c...

java hashmap

/*
* map集合的特点
* 将键映射值的对象,一个映射不能包含重复的值;每个键最多只能映射到一个值
* 
* map集合和collection集合的区别?
* map集合存储元素是成对出现的,map集合的键是唯一的,就是可重复的。可以把这个理解为:夫妻对
* collection集合存储元素是单独出现的,collection的儿子set是唯一的,list是可重复的,可以把这个理解为:光棍
* 
* 注意:
* map集合的数据结构值针对键有效,限值无效
* collection集合的数据结构是针对元素有效
* 
* map集合的功能概述:
* 1:添加功能
* v put(k key,v value);//添加元素
* 如果键是第一次存储,就直接存储元素,返回null
* 如果键不是第一次存储,就用值把以前的值替换掉,返回以前的值
* 
* 2:删除功能
* void clear();//移除所有的键值对元素
* v remove(object key);//根据键删除键值对元素,并把值返回
* 
* 3:判断功能
* boolean containskey(object key);//判断集合是否包含指定的键
* boolean containsvalue(object value);//判断集合是否包含指定的值
* boolean isempty();//判断集合是否为空
* 
* 4:获取功能
* set<map,entry<e,v>> entryset();获取键值对的对象集合
* v get(object key);//根据键获取值
* set<k> keyset();//获取集合中所有键的集合
* collection<v> values();//获取集合中所有值的集合
* 
* 5:长度功能
* int size();//返回集合中的键值对的对数
* */

 map集合的遍历

方式1,根据键查询值

获取所有键的集合

遍历键的集合,获取每一个键

根据键,查询值

方式2,根据键值对的对象查询键和值

获取所有键值对的对象的集合

遍历键值对的对象的集合,获取到每一个键值对的对象

根据键值对的对象,查询键和值

方式1,根据键查询值

/*

* map集合的遍历,根据键查询值
* 
* 思路:
* a:获取所有的键
* b:遍历键的集合,获取得到每一个键
* c:根据键查询值
* */

 

import java.util.hashmap;
import java.util.map;
import java.util.set;
 
/*
 * map集合的遍历,根据键查询值
 *
 * 思路:
 * a:获取所有的键
 * b:遍历键的集合,获取得到每一个键
 * c:根据键查询值
 * */
 
public class integerdemo {
  public static void main(string[] args) {
    // todo auto-generated method stub
 
    map<string, string> map = new hashmap<string, string>();
 
    map.put("hello", "world");
    map.put("java", "c++");
    map.put("sql", "os");
 
    system.out.println(map);
 
    // a:获取所有的键
    set<string> set = map.keyset();
 
    // b:遍历键的集合,获取得到每一个键
    for (string key : set) {
      // c:根据键查询值
      string value = map.get(key);
      system.out.println(key + "---" + value);
    }
  }
}

方式2,根据键值对的对象查询键和值

/*
* map集合的遍历,根据对象查询键和值
* 
* 思路:
* a:获取所有的键值对对象的集合
* b:遍历键值对对象的集合,得到每一个键值对的对象
* c:获取键和值
* */

import java.util.hashmap;
import java.util.map;
import java.util.set;
 
/*
 * map集合的遍历,根据对象查询键和值
 *
 * 思路:
 * a:获取所有的键值对对象的集合
 * b:遍历键值对对象的集合,得到每一个键值对的对象
 * c:获取键和值
 * */
 
public class integerdemo {
  public static void main(string[] args) {
    // todo auto-generated method stub
 
    map<string, string> map = new hashmap<string, string>();
 
    map.put("hello", "world");
    map.put("java", "c++");
    map.put("sql", "os");
 
    system.out.println(map);
 
    // a:获取所有的键值对对象的集合
    set<map.entry<string, string>> set = map.entryset();
 
    // b:遍历键值对对象的集合,得到每一个键值对的对象
    for (map.entry<string, string> me : set) {
      // c:获取键和值
      string key = me.getkey();
      string value = me.getvalue();
      system.out.println(key + "---" + value);
    }
  }
}
 


 


/*
* 1:hashmap和hashtable的区别?
* hashmap线程不安全,效率高,允许null键和null值
* hashtable线程安全,效率低,不允许null键和null值
* 
* 2:list,set,map等接口是否都继承于map接口?
* list,set不是继承自map接口,它们继承自collection接口
* map接口本身就是一个顶层接口
* */
import java.util.hashmap;
import java.util.hashtable;
 
public class integerdemo {
  public static void main(string[] args) {
    // todo auto-generated method stub
 
    hashmap<string, string> hm = new hashmap<string, string>();
    hashtable<string, string> ht = new hashtable<string, string>();
 
    hm.put("hello", "world");
    hm.put("java", "c++");
    hm.put(null, "sql");
 
    ht.put("hello", "world");
    ht.put("java", "c++");
    ht.put(null, "sql");// exception in thread "main"
              // java.lang.nullpointerexception
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!