Map以及其子类

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 {

}

时间: 2024-12-22 14:02:12

Map以及其子类的相关文章

JAVA学习第三十九课(常用对象API)- 集合框架(七)— Map集合及其子类对象

一.Map集合常见子类 HashTable:内部结构是哈希表,同步,此实现提供所有可选的映射操作,不允许使用 null 值和 null 键 (HashTable下有子类Properties,使用频率非常高,用来存储键值对型的配置文件信息和IO技术相结合) HashMap:内部结构是哈希表,不同步,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. TreeMap:内部结构是二叉树,不同步,可以对Map集合中的键进行排序. 二.HashMap演示 import java.ut

Map接口及其子类

Map接口操作的是一对对象,即二元偶对象,Map接口中的每个元素都使用"key--value"的形式存储在集合中. SortedMap接口是排序接口,只要是实现了此接口的子类,都属于排序的子类.TreeMap就是此接口的一个子类 Map接口常用的子类: HashMap:无序存放,新的操作类,key不允许重复 Hahtable:无序存放,旧的操作类,key不允许重复 TreeMap:可以排序的Map集合,按集合的key排序,key不允许重复 WeakHashMap:弱引用的Map集合,清

黑马程序员——java——Map集合的子类HashMap的简单操作方法

Map集合的子类HashMap的简单操作方法 import java.util.HashMap; import java.util.Iterator; public class HashMapDemos { public static void%r0main(String[] args) { // HashMap<Studenti,String> hm = new HashMap<Studenti,String>(); hm.put(new Studenti("kk&qu

java:Map借口及其子类HashMap五,identityHashMap子类

了解:identityHashMap子类 一般情况下,标准的Map,是不会有重复的key值得value的,相同的key是被覆盖的.HashMap IdentityHashMap是个例外,他允许Key值重复,只有当两个对象用"=="来判断时,才能判断他相等. Map<String, Integer> map = new IdentityHashMap<String,Integer>(); map.put(new String("zhangsan"

JAVA-初步认识-常用对象API(集合框架-Map集合常见子类对象)

一. 说完了map集合,顺便说些小东西. map集合常用的子类: hashtable研究的就是数据结构,哈希在1.0就出来了,那是还没有table.当时,单列集合只有vector,双列集合就是hashtable.内部结构就是哈希表.是同步的.hashmap和hashtable有区别么,效率高低不再多说.下图是hashmap的API注解,是不同步的. hashtable,它不支持空键和空值.面试的时候它们之间的区别. 上面截图的体系和一个集合体系很像,就是set集合,hashset和treeset

java:Map借口及其子类

Conllection是保存单值最大得父接口(即没有key的数据),那么Map是保存的内容是一对键值的数据,即KEY->VALUE的形式保存,如电话簿等. Map常用的接口有三个: HashMap, Hashtable, TreeMap, Map的常用方法: put(key, value) 增加内容 get(object key)可根据key取值 containKey(Object key)查找指定的key是否存在 containValue(object value)查找指定的value是否存在

Java基础集合Collection Map的概述

概述: 1,jse-collection分类,主要讲解Collection和Map接口的子类及其接口和相关工具类(不含线程安全的集合类). 2,本节介绍一下整体集合框架的结构图. 一.关于java集合涉及到的基本数据结构和算法的理论(这里试试简单的给大家一些参考). 数组(Array),在中间位置插入.删除效率低下,但是按位置索引查找快.链(Linked),在中间位置插入.删除效率高,按位置索引查找效率低下.树.散列. ---------------集合(Set),无序.不重复的原始集合.列表(

java Map排序问题

java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它们都是Map的直接子类.java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个 Map中不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Key是 唯一的,而value不唯一.如果考虑到存 取效率的话,建议使用HashMap数据结构,而

Java中Map根据键值(key)或者值(value)进行排序实现

我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Key是唯一的,而value不唯一.Map是一个接口,我们不能 直接声明一个Map类型的对象,在实际开发中,比较常用的Map性数据结构是HashMap和TreeMap,它们都是Map的直接子类.如果考虑到存取 效率的话,建议使用HashMap数据结构,而如果需要考虑到Key的顺序,建议使用TreeMap,但是