码迷,mamicode.com
首页 > 其他好文 > 详细

Map以及其子类

时间:2016-06-07 10:01:02      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
package com.Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/*
 * 引入Map
 * 我们知道集合是为了存储对象的。Collection集合的特点是存储一些对象,里面的每一个值都是一个对象
 * 当遇到这样的情况:
 *     比如:学校中的学生,如何查询呢?根据学号查询学生
 *     如果使用的是Collection保存的数据,就需要遍历collection所有学生,然后查找对应学号的学生的内容
 *  如果是使用的Map集合的话,可以特别将学生id提出来,因为它是唯一的,作为键,然后遍历所有键,找到
 *  对应键,然后表示出键所对应的学生信息
 *  我感觉,使用Map存储数据可以简化查询时间。
 *  
 *  Map<K,V>  映射项(键值对)
 *  key是不可以重复的,map的数据结构只与key有关,value是该key中存储的值
 *  
 *  Map<K,V>的方法
 *  
 * 增、 改:
 *      Object put(key,value)//返回的是原来该key中的value
 *      putAll(Map<? extends K,? extends V> m) 将m中的所有映射加入到此map,如果有key相同的则替换操作
 *  删:
 *      clear()
 *      remove(Object key) //删除指定key的键值对
 *  判断:
 *      containsKey(Object key)
 *      containsValue(Object key)
 *      equals(Object o)
 *      hashCode()
 *      isEmpty()     
 *  获取:
 *      Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图
 *      get(Object key) 获取Map中对应key的属性值
 *      Set<k> keySet() 返回此映射中的key的Set集合
 *      Collection<V> values() 返回此映射中包含的值的Collection视图
 *      size() 返回此映射中的键-值映射关系数量
 */
public class Study01 {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<Integer,String>();
        Map<Integer,String> map1=new HashMap<Integer,String>();
        //put(K,V)
        System.out.println("put:"+map.put(1, "guodaxia"));
        map.put(1, "guoxiaoxia");
        map1.put(1, "aao");
        map1.put(2,"QAQ");//QAQ 哭,卖萌
        
        //putAll
        map.putAll(map1);
        System.out.println(map);//重写了toString
        
        //remove(Object key)
//        System.out.println("remove:"+map.remove(1));
//        System.out.println(map);
        
        //clear()
//        map.clear();
//        System.out.println(map);
        
        System.out.println(map.containsKey(1));
        System.out.println(map.containsValue("QAQ"));
        
        //get(key)
        System.out.println(map.get(1));;
        
        //keySet()
        Set<Integer> keys=map.keySet();
        for(int i: keys){
            System.out.println(i+"---"+map.get(i));
        }
        //values()
        Collection<String> l=map.values();
        for(Iterator<String> it=l.iterator();it.hasNext();){
            System.out.println(it.next());
        }
        
        //Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图
        //Map.Entry<K,V>是一个接口,它的实现类存储了一对映射值key--value,你将它理解成为一个存储键值对的对象
        //它的几个方法:
//            getKey()
//            getValue()
//            toString()
//            setValue()
//            hashCode()
//            equals()
//        它和Collection中的迭代器类似,可以说成是Map集合的特有迭代器,所以也可以通过这个修改集合内容
        Set<Entry<Integer,String>> s= map.entrySet();
        for(Entry<Integer,String> ss:s){
            System.out.println(ss.getKey()+"\t"+ss.getValue());
        }
        for(Entry<Integer,String> ss:s){
            if(ss.getKey()==2){
                ss.setValue("haha");
            }
        }
        System.out.println(map);
        
    }

}


package com.Map;

/*
 * 
 * hashMap 哈希表结构
 * 
 * linkedHashMap 底层是哈希表和链表,有序唯一
 *
 *    TreeMap
 *    键是红黑树结构  有特定顺序,唯一
 *    排序和唯一与排序方式有关
 *自然排序是实体类实现Comparable接口
 *排序器实现。
 *    创建排序器,排序器是一个类,实现Comparator接口
 *    在创建TreeMap时候构造方法导进去排序器
 */
public class Study02 {

}
View Code

 

Map以及其子类

标签:

原文地址:http://www.cnblogs.com/aigeileshei/p/5565981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!