黑马程序员——java基础---集合(第16天)

原创 2015年07月06日 20:08:27

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----

Map集合   

一、Map概述 

Map集合存储键值对。一对一对的存储。键不可以重复,值可以被覆盖。

       |--Hashtable:  底层是哈希表数据结构,不可以存入nullnull。该集合是线程同步的。jdk1.0.效率低(比较规则是hashCode()和equals())。

       |--HashMap:底层是哈希表数据结构,允许使用 null值和 null ,该集合是不同步的。将hashtable替代,jdk1.2.效率高(比较规则是hashCode()和equals())。

       |--TreeMap: 底层是二叉树数据结构。线程不同步。可以用于给map集合中的进行排序(排序时的方法和TreeSet一样,即:实现comparablecomparator两个接口即可)

其实Set底层就是使用了Map集合。

二、Map<K,V>常用的公共功能

1,添加

V put(K key, V value)  添加时,如果出现相同的键。那么后添加的值会覆盖原有键的对应值。并且put方法会返回被覆盖的值。

void putAll(Map<?extends K,? extends V> m)  从指定映射中将所有映射关系复制到此映射中

2,删除

void clear()  清空集合

V remove(Object key)  方法会删除指定元素并返回被删除的值。

3,判断

boolean containsValue(Objectvalue)  若包含此值,则返回true。

boolean containsKey(Objectkey)     若包含此键,则返回true

boolean isEmpty()                 若包含键和值,则返回 true。

4,获取

V get(Object key)               返回指定键所映射的值,不存在返回NULL,

Collection<V> values()           返回此映射中包含的所有的值。

Set<Map.Entry<K,V>> entrySet()  返回此映射中包含的映射关系的Set 视图。               

Set <K> keySet()                返回此映射中包含的所有键并存入Set集合中。

三、 取出map集合元素的两种方式

1、Set<k> keySet

将map集合中所有的键存入到Set集合。因为set具备迭代器,可以用迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。

Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。

1.1、keySet()代码示例


2、Set<Map.Entry<k,v>>entrySet

先将map集合中的映射关系转换成Map.Entry数据类型存入到set集合中;

再利用set迭代器遍历set集合中的元素,

通过Map.Entry中的特有方法getKey()和getValue()取出所有的键和值。

   2.1、entrySet()代码示例


Map扩展练习:现实生活中一种事物往往有多重映射关系 ,例如一个学校有好几个年级,一个年级有好几个班,一个班有好多学生。

练习:一个学校有两个班,基础班和就业班;每个班级有两名同学,每名同学还有自己的名字和年龄 。

代码示例:




运行结果为:


小知识点:Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。

   代码示例:


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----



黑马程序员——Java基础---集合(第18天 )

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、System静态类 System:类中的方法和属性都是静态的。 static Prin...
  • chao100ge
  • chao100ge
  • 2015年07月06日 21:45
  • 158

黑马程序员_毕向东_Java基础视频教程学习笔记(十三)

面向对象: 面向对象时相对面向过程而言。 面向对象和面向过程都是一种思想。 面向过程强调的是功能行为。 面向对象是将功能封装进对象,强调具备了功能的对象。 面向对象时基于面向过程的。 public c...
  • escdelete
  • escdelete
  • 2013年11月16日 23:11
  • 936

黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1431

黑马程序员——Java基础---练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础---练习题 1.写出程序结果class Demo { public stat...
  • liu007004
  • liu007004
  • 2015年01月19日 16:35
  • 703

黑马程序员---Java基础--16天(集合之一)

---------------------- android培训、java培训、期待与您交流! ----------------------1.集合(Map概述) 2.集合(Map子类对象特点) ...
  • MsLinux386
  • MsLinux386
  • 2012年06月22日 11:47
  • 1176

java基础第16天

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 集合概述 1 什么叫集合   集合,也称为Java 类集,是一个动态...
  • ghzhangfoxmail
  • ghzhangfoxmail
  • 2013年03月23日 15:27
  • 364

2016最新整理黑马程序员JavaEE第28期 基础班就业班

2016最新整理黑马程序员JavaEE第28期 基础班就业班
  • java_c_plus_plus
  • java_c_plus_plus
  • 2016年11月11日 00:15
  • 3398

黑马程序员--Java基础面试题整理

------- android培训、java培训、期待与您交流! Java面试题整理(自己学习过程中整理的重点题目,为面试做准备) 编程基础 1.(面试题): ...
  • wwj101004
  • wwj101004
  • 2014年10月31日 23:09
  • 818

传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁。           void unlock():释放锁。 ...
  • juliantem
  • juliantem
  • 2016年04月15日 00:40
  • 5023

黑马程序员 学习毕老师java视频第14.15.16天

---------------------- android培训、java培训、期待与您交流! ---------------------- 毕向东 Java基础视频教程14天01 集合...
  • heimahuwei
  • heimahuwei
  • 2012年02月18日 08:38
  • 1133
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——java基础---集合(第16天)
举报原因:
原因补充:

(最多只允许输入30个字)