黑马程序员-Java基础---集合框架-Map

第一讲 Map概述&子类对象特点&共性方法

1、  定义

Map集合:该集合存储键值对,一对一对的往里存,而且要保证键是唯一的。若存了重复的键,那么对应此键的值将被后一个覆盖。

2、  Map子类对象特点

Map集合有如下三个子类:

l  Hashtable:底层是哈希表数据结构,不可存入null键或null值。线程同步,JDK1.0就有,效率稍低。

l  HashMap:底层是哈希表数据结构,可以存入null键或null值。线程同步,JDK1.2出现,效率较高。

l  TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合进行排序。

3、  Map集合中操作数据的功能

1)  添加元素

l  Put(K key , V value)——将一个键值对存入Map集合中,如果集合中已存在相同的键,返回该键对应的值;如果集合中没有相同的键,则返回Null。

l  putAll(Map<? Extends K , ? extends V> m)——将一个Map集合中所以的键值存入另一个Map集合中

2)  删除

l  Clear()——清空Map集合中;

l  Remove(Object key)——删除键key对应的元素,并返回值;

3)  判读

l  containsValue(Object value)——按值判断map集合中是否存在对应的元素;

l  containsKey(Object key)——按键判断map集合中是否存在对应的元素;

l  isEmpty()——判断Map集合是否为空;

4)  获取

get(Object key)——根据键获取map集合中的元素;

size()——获取map集合中原元素个数;

values()——获取map集合中所有的值

代码实现如下:

第二讲  Map集合的两种取出方式:keySetentrySet

1、  获取Map集合中元素的思路:map中用根据键获取值的方法get(),如果我们能获取到集合中所有的键,那就可以利用get()方法来获取集合中的值了。

2、  利用keyset方式来取出Map集合中的元素

思路:Keyset方法可以获取到集合中所有的键,并将这些键存入Set集合中。然后我们可以通过迭代器读取Set中的键,再利用get()获取每一个键对应的值。

代码实现如下:

3、  利用entrySet方式来取出Map集合中的元素

思路:通过entrySet()方法可以获取Map集合中的映射关系(Map.Entry<K,V>),并存入Set集合中。通过映射关系接口Map.Entry<K,V>中的getKey()和getValue()方法来获取关系中的键和值。

Map.Entry说明: Entry也是一个接口,它是Map接口中的一个内部接口,而且是静态的,可通过外部接口直接调用。注意:内部接口由内部类来实现。

代码实现如下:

4、  练习

题目:每一个学生都有对应的归属地,学生属性有:姓名、年龄,当姓名和年龄相同时视为同一个学生。要保证学生的唯一性

思路:

l  描述学生;

l  定义Map容器,将学生作文 键,地址作为值,存入容器;

l  获取Map集合中的元素;

代码实现如下:

5、  Map集合扩展

当键和值不是一对一关系,而是一对多关系,而多个对象又有键值对关系,此时需要利用嵌套map集合的方式存储。

解决思路:可以先将多个对象封装到一个Map集合中,然后再将给集合和键存入外面的Map集合中。

代码实现如下:

知识点总结

1、  Map 中的键和值都是一对一关系,且键在Map中必须是唯一的。若存在一对多的关系时,可以使用嵌套map集合的方式进行存储,即,将多个对象先存放在内嵌map集合中,然后将此集合存入另一个map集合中。

2、  取得map集合中所有值的方法有如下三种

l  Collection<V> values();

l  keySet方式

思路:先获取Map集合键,然后根据键取值。

l  entrySet方式

思路:先获取Map集合中的映射关系,然后利用获取的映射关系来获取Map集合中的值。

时间: 2024-10-14 10:39:58

黑马程序员-Java基础---集合框架-Map的相关文章

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础---集合框架

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合框架 概念:集合框架是Java中为了方便对集合进行存储.操作而形成的体系.集合是针对对象最常见的一种存储形式. 数组和集合类同是容器,区别在哪里?     相同点:               集合和数组都是容器,都可一存储对象(对象引用).     不同点:               数组长度固定,集合长度可变.               数组可以存储基本数据类型,集合却只能存储

黑马程序员---java基础---集合框架工具类:Collections和Arrays

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        Collections 一.概述 Collections是对集合框架的一个工具类.它里边的方法都是静态的,不需要创建对象.并未封装特有数据. 在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

黑马程序员-java基础-集合框架-Collection、List、Set

第一讲:体系概述 一.概述 1.  作用:用于存放对象的容器 2.  特点:只用于存储对象,集合长度可变,集合可以存储不同类型的对象: 3.  与数组的区别:虽然数据也可以存储对象,但数组的长度是固定的,而集合长度是可变的,集合类的出现可以解决现实生活中数量不确定的问题: 4.  常用的集合类及结构 第二讲:共性方法 集合实现了Collection接口,Collection接口声明了如下常用方法: 1)  向集合中添加元素:add(Object obj).addAll() add()方法用于向集

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

黑马程序员——JAVA基础——集合

----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.关于java中的集合类 首先看一下,大致的框架流程图 通过这些我们可以看出来,通常我们经常采用的vector.arraylist.hashset,treeset,hashmap,hashtable,treemap.linkedlist类 关于vector和arraylist对比,vector是线程安全的,vector通过遍历,性能更高. ArrayList和Vector功能类

黑马程序员------java基础----集合

  ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------  集合框架 为什么会出现这么多容器? 因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存

黑马程序员---java基础--集合、数组、字符串的综合面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 这道题综合了集合,数组,字符串,字符串缓冲区,自动装箱等知识点,你把这道题做会了,java基础你也就学的差不多了. 问题: 自定义一个段由小写字母组成的字符串统计每个字母出现的次数. 例如:abc,输出结果为:a(1)b(1)c(1) 代