Java Map

1.Map

 采用了 Key-value键值对映射的方式进行存储 ;
     *      key在Map里面是唯一的但是value可以重复,一个key对应一个value,如果重复value将被覆盖;
     *      key是无序、唯一的,value是无序可重复的;

/**
	 * Collection每次只能保存一个对象,Map主要负责保存一对对象的信息;
	 * Map存放的信息的最终目的是为了信息的查找,Collection存放信息的最终目的输出;
	 * public interface Map<K,V>
	 * 主要方法:
	 *   V put(K key,V value)想集合保存数据
	 *   V get(Object key) 根据key查找对应的value值
	 *   Set<Map.Entry<K,V>> entrySet() 将map集合转化为set集合;
	 *   Set<K> keySet() 取出所有的key
	 *   Map中常用的子类:HashMap,Hashtable
	 *   Map的特点:
	 *      采用了 Key-value键值对映射的方式进行存储 ;
	 *      key在Map里面是唯一的但是value可以重复,一个key对应一个value,如果重复value将被覆盖;
	 *      key是无序、唯一的,value是无序可重复的;
	 *   public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable
	 *    HashMap特点:存储一组无序,key和空value可为null对象;
	 *   public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable
	 *    a.JDK1.0提供的;
	 *    b.key和空value不允许为null对象, 但是允许空字符;
	 *    HashMap和hashTable的确保
	 *    HashMap:jdk1.2推出,采用异步处理,非线程安全,允许设置key和value值为null;
	 *    HashTable:jdk1.0推出,采用同步处理,线程安全,不允许设置key和value的值为null;
	 *   
	 *    
	 */
	 Map<String,Object> map=new HashMap<String,Object>();
	 map.put("1", "amy");
	 map.put("1", "mike");
	 map.put("", "null");
	 map.put(null, null);
	 map.put("2", 1000);
	 System.out.println(map);
	 Map<String,Object> ht=new Hashtable<String,Object>();
	 ht.put("1", "amy");
	 ht.put("1", "mike");
	 ht.put("", "null");
	 ht.put("3", "33");
	 ht.put("2", 1000);
	 ht.put("", "");
	 System.out.println(ht);

2.关于Iteration输出问题

/* *Iterator的输出问题;
     * 在Map中很遗憾没有返回Iterator的方法;由于Collection和Map保存数据的特点,可以可以知道当我们使用put(key,value)方法想Map集合中保存一对数据的时候,
     * 实际上会自动封装为Map.Entry<K,V>接口对象;
     * public static interface Map.Entry<K,V>
     * 主要方法:
     *    K getKey()获取key值
     *    V getValue()获取value值
     * Map集合利用iterator接口输出的步骤;
     *   a.利用Map接口中的 entrySet()方法将Map集合变为set集合,里面的泛型是Map.Entry<K,V>
     *   b.利用Set集合中的iterator()方法将Set集合进行输出;
     *   c.每次迭代取出的都是Map.Entry<K,V>接口对象,利用对象进行key和value的获取;
     * */

Map输出实现

1.最常用的方式

//使用泛型
Map<String,Object> map=new HashMap<String,Object>();
	 map.put("1", "amy");
	 map.put("1", "mike");
	 map.put("", "null");
	 map.put(null, null);
	 map.put("2", 1000); 
Set<Entry<String, Object>> entrySet = map.entrySet();
	 Iterator<Entry<String, Object>> iterator = entrySet.iterator();
	 while(iterator.hasNext()) {
		 Entry<String, Object> next = iterator.next();
		 String key=next.getKey();
		 Object value = next.getValue();
		 System.out.println("key: "+key+" value :"+value);
	 }
//不使用泛型
	Map map1=new HashMap<String, Object>();
	map1.put("name", "李白");
	map1.put("name", "李煜");
	Iterator iterator = map1.entrySet().iterator();
	while(iterator.hasNext()){
		Map.Entry<String, Object> next = (Map.Entry<String, Object>)iterator.next();
		String key = next.getKey();
		Object value=next.getValue();
		//System.out.println(key+" : "+value);
	}

JDK1.8 使用Lambda表达式
map.forEach((k,v)->{  
        System.out.println("key "+k+" value "+v);
    }
    );

2.其他输出方式

Map<String,Object> map=new HashMap<String,Object>();
	 map.put("1", "amy");
	 map.put("1", "mike");
	 map.put("", "null");
	 map.put(null, null);
	 map.put("2", 1000); 
//使用泛型
	//取出所有的键
    for (Map.Entry<String, Object> entry : map.entrySet()) {
    	//System.out.println(entry.getKey()+" : "+entry.getValue());
	}
  
	
  //分别取出key和value
    for (Object key : map.keySet()) {
		System.out.println(key);
	}
    //取出所有的值
    for (Object val : map.values()) {
		System.out.println(val);
	}
	//通过键取值
    for (String string : map.keySet()) {
    	String key=string;
    	Object value = map1.get(key);
    	System.out.println(key+" : "+value);
	}

Map中key的相关说明

 /**
      * Map集合中key值得说明
      * 自定义得类作为key值必须重写Object中的hashCode()和equals()(只有这两个方法可以确定元素是否重复),在Map中指的是是否可以找到;
      * 在实际中尽量考虑用String
      */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值