Map接口,hashMap类,TreeMap类,WeakHashMap。

Collection接口之前接触过,每次保存的对象是一个对象,但是在map中保存的是一对对象,是以key->value形式保存的。

定义:

public interface Map<K,V>

Map.Entry接口。

定义:

public static interface Map.Entry<K,V>

常用方法:

Map与Map.Entry关系:

常用子类:

以HashMap为例说明基本操作方法:put()增加内容,get()取出内容

根据键取出内容。 map.get("key")。

package 类集;
import java.util.HashMap;
import java.util.Map;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new HashMap<String,String>() ;
        map.put("mldn","www.mldn.cn") ;    // 增加内容
        map.put("zhinangtuan","www.zhinangtuan.net.cn") ;    // 增加内容
        map.put("mldnjava","www.mldnjava.cn") ;    // 增加内容
        String val = map.get("mldn") ;    // 根据key取出值
        System.out.println("取出的内容是:" + val) ;

    }
};

输出结果:

取出的内容是:www.mldn.cn

也可以通过contains.Xxx()方法判断指定的key或者values是否存在

package 类集;
import java.util.HashMap;
import java.util.Map;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new HashMap<String,String>() ;
        map.put("mldn","www.mldn.cn") ;    // 增加内容
        map.put("zhinangtuan","www.zhinangtuan.net.cn") ;    // 增加内容
        map.put("mldnjava","www.mldnjava.cn") ;    // 增加内容
        if(map.containsKey("mldn")){    // 判断key是否存在
            System.out.println("搜索的key存在!") ;
        }else{
            System.out.println("搜索的key不存在!") ;
        }
        if(map.containsValue("www.mldn.cn")){    // 判断value是否存在
            System.out.println("搜索的value存在!") ;
        }else{
            System.out.println("搜索的value不存在!") ;
        }
    }
};

如果想输出全部的key,注意,不包含Values,则使用如下方法:

Set<K> KeySet()。

例子如下:

package 类集;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new HashMap<String,String>() ;
        map.put("mldn","www.mldn.cn") ;    // 增加内容
        map.put("zhinangtuan","www.zhinangtuan.net.cn") ;    // 增加内容
        map.put("mldnjava","www.mldnjava.cn") ;    // 增加内容
        Set<String> keys = map.keySet() ;    // 得到全部的key
        Iterator<String> iter = keys.iterator() ;
        while(iter.hasNext()){
            String str = iter.next() ;
            System.out.print(str + "、") ;
        }
    }
};

输出结果:

mldn、zhinangtuan、mldnjava、

既然可以得到全部的key,那么也能得到所有的value.通过方法values().

定义如下:

Collection<V> Values()

实例:

package 类集;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new HashMap<String,String>() ;
        map.put("mldn","www.mldn.cn") ;    // 增加内容
        map.put("zhinangtuan","www.zhinangtuan.net.cn") ;    // 增加内容
        map.put("mldnjava","www.mldnjava.cn") ;    // 增加内容
        Collection<String> values = map.values() ;    // 得到全部的value
        Iterator<String> iter = values.iterator() ;
        while(iter.hasNext()){
            String str = iter.next() ;
            System.out.print(str + "、") ;
        }
    }
};

输出:

www.mldn.cn、www.zhinangtuan.net.cn、www.mldnjava.cn、

在Map中还存在TreeMap的子类,以Key排序。

package 类集;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new TreeMap<String,String>() ;
        map.put("A、mldn","www.mldn.cn") ;    // 增加内容
        map.put("C、zhinangtuan","www.zhinangtuan.net.cn") ;    // 增加内容
        map.put("B、mldnjava","www.mldnjava.cn") ;    // 增加内容
        Set<String> keys = map.keySet() ;    // 得到全部的key
        Iterator<String> iter = keys.iterator() ;
        while(iter.hasNext()){
            String str = iter.next() ;
            System.out.println(str + " --> " + map.get(str)) ; // 取出内容
        }
    }
};

输出结果:

A、mldn --> www.mldn.cn
B、mldnjava --> www.mldnjava.cn
C、zhinangtuan --> www.zhinangtuan.net.cn

会发现,以上把得到的Map的key全部得到,取出来后,一个个输出,发现输出第二和第三的顺序与输入Map的不一样,变化了,

这表明,TreeMap把输入的内容,按照key排序了。

使用treemap可以方便的完成排序的操作。

如果自定义的类要想作为key的话,则肯定要实现comparable接口,指定比较的规则

弱引用类:WeakHashMap,system.gc()

  如果假设Map中某些内容长时间不使用,之前做法是不会自动删除的,如果希望其自动删除,可使用弱引用类。当内容不需要的时候,会自动删除。

package 类集;
import java.util.Map;
import java.util.WeakHashMap;
public class test1{
    public static void main(String args[]){
        Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
        map = new WeakHashMap<String,String>() ;
        map.put(new String("mldn"),new String("www.mldn.cn")) ;
        map.put(new String("zhinangtuan"),new String("www.zhinangtuan.net.cn")) ;
        map.put(new String("mldnjava"),new String("www.mldnjava.cn")) ;
        System.gc() ;    // 强制性进行垃圾的收集操作
        map.put(new String("lxh"),new String("lixinghua")) ;
        System.out.println(map) ;
    }
};

输出结果:

{lxh=lixinghua}

发现GC()之前的内容都被删除了。

时间: 2024-12-31 10:09:59

Map接口,hashMap类,TreeMap类,WeakHashMap。的相关文章

9.5-全栈Java笔记:Map接口中的实现类HashMap

上节聊到「Map接口和实现类」,今天我们深入探讨其实现类中的HashMap如何进行底层实现. Hashmap基本结构讲解 哈希表的基本结构就是"数组+链表".我们打开HashMap源码,发现有如下两个核心内容: public class   HashMap<K,V> extends   AbstractMap<K,V> implements   Map<K,V>, Cloneable, Serializable { /** * The default

Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

http://www.cnblogs.com/skywang12345/p/3311126.html 概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map

JAVA中Collection接口和Map接口的主要实现类

Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set. 所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collectio

java:容器/集合(Map(HashMap,TreeMap))

HashMap: *Map接口:采用是键值对的方式存放数据.无序 *常见的实现类: *--HashMap:基于哈希表的 Map 接口的实现. *常用的构造方法: * HashMap()构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap. * HashMap(int initialCapacity) 构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap *常用方法: * put(K key, V value)在此映射中关联指定值与指定键. *

java Map接口实现之一TreeMap(不涉及类比较)

需要排序的时候使用TreeMap,是红黑二叉树的典型实现 Map<Integer,String> treemap =new TreeMap<>(); treemap.put(1,"ad"); treemap.put(12, "ff"); treemap.put(4, "bb"); *treemap.keySet()* //返回键的集合 for(Integer i :treemap.keySet()) //返回一个key的集

Java——(七)Map之HashMap和Hashtable实现类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key, 另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的key不允许 重复,即同一个Map对象的任何两个key通过equals()方法比较总是返回false. Set与Map之间的关系非常密切.虽然Map中放的元素是key—value对,Set集合中放的元素

Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap

Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的key不容许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false. key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的.确定的value.从Map中取出数据时,只要给出指定的key,就可以取出对应的value. 如果把Map里的所有key放在一起看

Java中的集合Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap(五)

Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的key不容许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false. key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的.确定的value.从Map中取出数据时,只要给出指定的key,就可以取出对应的value. 如果把Map里的所有key放在一起看

Java容器深入浅出之Map、HashMap、Hashtable及其它实现类

在Java中,Set的底层事实上是基于Map实现的,Map内部封装了一个Entry内部接口,由实现类来封装key-value对,当value值均为null时,key的集合就形成了Set.因此,Map集合具有如下的一些特点: 1. Key集因为是Set的实现,因此是无顺序.不可重复的. 2. Value集是List的实现,因此是可以重复的,每个元素根据key来索引. 3. Map内部包含一个Entry内部接口,用于定义key-value对,由实现类来对外提供查找和设置value的方法. Map的基