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()之前的内容都被删除了。

上面没有关于Map.Entry的相关代码,重新找了点文章。如下:

Map是java中的接口,Map.Entry是Map的一个内部接口,

Map提供了一些常用方法,如keySet()、entrySet()等方法。

keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

Map<String,Integer> map=new HashMap<String,Integer>();
map.put("1", 1);
map.put("2", 2);
map.put("3", 3);
map.put("3", 3);
Iterator itor=map.entrySet().iterator();
while(itor.hasNext()){
  Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();
  System.out.println("key="+entry.getKey().toString());
  System.out.println("values="+entry.getValue().toString());
}

可以结合以下链接学习一下:

IdentityHashMap类:增加相同Key(键)内容的结果

SortedMap接口:进行排序操作。

 
 

Map接口,Map.Entry,hashMap类,TreeMap类,WeakHashMap。的更多相关文章

  1. Map接口----Map中嵌套Map

    package cn.good.com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

  2. 算法竞赛中的常用JAVA API :HashMap 和 TreeMap(转载)

    算法竞赛中的常用JAVA API :HashMap 和 TreeMap 摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实 ...

  3. 常用Java API:HashMap 和 TreeMap

    摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实现,是无序的 clear()//清空. containsKey(Obje ...

  4. Map 接口有哪些类

    Map接口 Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value:Map中的键值对以Entry类型的对象实例形式存在:建(key值)不 ...

  5. Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

    Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询 ...

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

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

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

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...

  8. Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...

  9. Map总结--HashMap/HashTable/TreeMap/WeakHashMap使用场景分析(转)

    首先看下Map的框架图 1.Map概述 1.Map是键值对映射的抽象接口 2.AbstractMap实现了Map中绝大部分的函数接口,它减少了“Map实现类”的重复编码 3.SortedMap有序的“ ...

随机推荐

  1. Android实现侧边栏SlidingPaneLayout

    //主布局 1 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widg ...

  2. 【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制

    1.1    应用场景 通讯平台的交互对象包括两方面:第一.与硬件产品交互.第二.与软件产品交互.基本这两方面考虑,通讯平台一般会应用在两个场景: 1)通讯平台应用在PC机上 主要应用在自动站的工控机 ...

  3. GJM : Unity调用系统窗口选择本地文件

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  4. js实现右下角可关闭最小化div

    本实例使用Javascript实现右下角可关闭最小化div,可以用于展示推荐内容,效果预览网址:http://keleyi.com/keleyi/phtml/xuanfudiv/3.htm效果图片: ...

  5. SVN版本控制系统学习(中文配置)

    先吐槽下往上搜索的一些SVN下载地址,里面乱七八糟啥都有,下载好后点击安装一不注意啥玩意都安装上了, 什么玩意都有,真心不明白这些推送者是怎么想的.搜集了一个WIN32的百度网盘下载地址: http: ...

  6. 深入理解Javascript中构造函数和原型对象的区别

    在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor) ...

  7. [python]初试页面抓取——抓取沪深股市交易龙虎榜数据

    [python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...

  8. iOS UISearchController的使用

    在iOS9中,UISearchDisplayController 已经被UISearchController替代.搜索框是一种常用的控件. 假设我们要满足下图的需求,产生100个“数字+三个随机字母” ...

  9. 视图xsl定制之嵌入服务器控件

    SharePoint 2010 视图 xsl 文件中支持嵌入服务器控件,嵌入服务器控件时,系统先采用xsl将视图xml解析成一个类似UserControl的存在,然后执行UserControl. 代码 ...

  10. JAVA模板方法设计模式(从现实生活角度理解代码原理)

    概述: 定义一个功能的框架(骨架),一部分功能是确定的,一部分功能是不确定的,先把确定的部分实现,把不确定的部分延迟到子类中实现. 实现该模式的关键步骤: 第一步:抽象类,实现模板方法,定义功能(确定 ...