黑马程序员_集合框架(三)

前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示。

Map<K,V>

Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素,都是由键和值两个元素组成,键是不能有重复的,值是可以重复的,每一个键唯一指向一个值。

Map体系

Map

——|hashtable: 底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。效率低,已被HashMap替代

——|HashMap: 底层是哈希表数据结构,允许使用 null 值和 null 键,线程不同步,将hashtable替代,效率高

——|TreeMap: 底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序,排序原理与TreeSet相同

Map特点

    Map存放的是键值对,并且键是唯一的,当向已经存在的键中重新添加时相当于给当前的键值重新赋值。

Map基本方法

1.添加

V put(K key, V value) :将指定的值与此映射中的指定键关联

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

2.删除

void clear():从此映射中移除所有映射关系

V remove(Object key) :如果存在一个键的映射关系,则将其从此映射中移除

3.判断

boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。

boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true。

boolean isEmpty():如果此映射未包含键-值映射关系,则返回 true。

4.获取

V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

int size():返回此映射中的键-值映射关系数。

values():返回此映射中包含的值的 Collection 视图。

entrySet():取的是键和值的映射关系

keySet():将map中所有的键存到Set集合

Map的两种取出方式:

1、keySet

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        // 学号,姓名
        map.put("01", "lisi1");
        map.put("02", "lisi2");
        map.put("03", "lisi3");
        map.put("04", "lisi4");
        Set<String> set = map.keySet();// 获取map集合的所有键到Set集合中;
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            String key = it.next();
            String value = map.get(key);// 有了键可以通过map集合的get方法获取其对应的值。
            System.out.println("学号:"+key + "...姓名:" + value);
        }
    }
}

2、enteySet

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        // 学号,姓名
        map.put("01", "lisi1");
        map.put("02", "lisi2");
        map.put("03", "lisi3");
        map.put("04", "lisi4");
        Set<Map.Entry<String,String>> entrySet=map.entrySet();
        Iterator<Map.Entry<String,String>> it=entrySet.iterator();
        while(it.hasNext()){
            Map.Entry<String, String> entry=it.next();
            String key=entry.getKey();
            String value=entry.getValue();
            System.out.println("学号:"+key + "...姓名:" + value);
        }
    }
}

Hashtable

数据结构为hash表, 不能存储null键null值,线程同步,安全,效率低。

HashMap

数据结构为hash表,可以存储null键null值,线程不同步,效率高

TreeMap

数据结构为二叉树(红黑树),可以存储null键null值,线程不同步,效率高。

综合事例

时间: 2024-12-15 01:32:53

黑马程序员_集合框架(三)的相关文章

黑马程序员_集合框架之(一)

-----Java培训.Android培训.iOS培训..Net培训.期待与您交流! 在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可以存储引用数据类型比如对象,集合框架更强大之处在于可以同时存储任意类型数据,这是数据无法做到的,另一方面,数组长度是固定的,但是实际生活中需求的容器大都是不确定的,这就需要一个可变长度的容器,而集合框架刚好弥补了数

黑马程序员_集合框架(二)

上篇文章介绍了Collection的体系以及List以及其常见实现类的基本用法,并 通过事例的形式演示了各自特殊用法,这篇文章主要是讲述Set及其子类的基本用法. Set体系结构图 --| Set 子接口,特点在于元素无序,元素不可重复 ??????? --| HashSet:底层数据结构是哈希表,是线程不安全的,不同步. ??????? --| TreeSet:可以对Set集合中的元素进行排序(红黑树) 共有方法摘要 boolean add(E?e) ??????????如果 set 中尚未存

黑马程序员_集合

集合1.集合和对象数组的区别: 数组的长度不可变,集合的可变: 数组可以存储基本数据类型和对象,集合只能存储对象. 集合的框架图 集合派系的顶层接口Collection1.Collection集合存储对象的方法: add(E e)将元素存储到集合中 addAll(Collection c)将一个集合添加到另外的集合中2.Collection集合提取对象的方法: 通过迭代器iterator中的方法:hasNext()和next()来取出 Iterator it=new iterator(); wh

黑马程序员_Java集合框架

- - - - - android培训.java培训.期待与您交流! - - - - - - 集合框架:用于存储数据的容器. 特点: 对象封装数据,对象多了也需要存储.集合用于存储对象. 对象的个数确定可以使用数组.如果不确定可以用集合.因为集合是可变长度的. 集合和数组的区别: 数组是固定长度的:集合可变长度的. 数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数据类型. 数据结构:就是容器中存储数据的方

黑马程序员---Java集合框架

---------------------- Android开发.java培训.期待与您交流! ---------------------- Java集合框架 集合我们都知道是用来储存对象的容器,那之前的数组不也可以储存对象么,为什么要出现集合呢? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,然而集合类中提供很多方便操作对象存储的方法,要比数组更容易操作对象,而且集合的长度是可变的,然而数组长度确实固定不变的,这样不利于对对象的间隔储存.  数组和集

黑马程序员__集合框架总结

------Java培训期待与您交流! ------- 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档. 一.概述 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口

黑马程序员——JAVA集合框架学习总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- www.itheima.com 要学好java的集合框架,必须掌握此图: Java集合框架很全面,从大的来说.它包括两种类型: 1.一种是以collection为根接口的集合. 2.另一种是由map为根接口的<key,value>的“图”. 而collection之下的set接口和list接口又有不同: 1.Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制.

黑马程序员——java集合框架之List,Set

集合框架  1.数组与集合的不同    数组长度是固定的,集合长度是可变的    数组中可以存储基本数据类型,集合只存储对象    集合可以存储不同类型的对象        2.java集合类中有两个顶层接口Collection和Map,下面是对Collection的一些总结: 集合中常用方法:     add方法的参数类型为Object,以便于接受任意类型的对象     集合中存储的都是对象的引用(或者说地址) 迭代器是集合取出元素的方式,此方法是定义在集合的内部,这样取出方式就可以直接访问集

黑马程序员------Java集合框架学习总结

Java培训.Android培训.iOS培训..Net培训.期待您的交流 一.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类. 二.Collection接口 Collction: List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引.