单例集合体系:

---------| collection  单例集合的根接口
--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的
------------------| ArrayList  ArrayList底层维护了一个object数组的实现的。(线程不安全),特点:查询速度快,增删速度慢。(有序,可重复)
------------------| LinkedList  LinkedList底层是使用链表结构实现的,线程不安全,特点:查询速度慢,增删速度快。(有序,可重复)
------------------| Vector(了解即可)  底层也是维护一个Object数组的实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低
--------------| Set  如果实现了set接口的集合类,具备的特点:无序,不可重复     注:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的
------------------| HashSet  底层是用于一个哈希表支持的,线程不安全,特点:存储速度块
------------------| TreeSet  底层是使用红黑树(二叉树)数据结构实现的,线程不同步(即线程不安全),不能在多线程中共享,但可以使用synchroinzedMap()方法来实现同步。特点:会对元素进行排序存储(按自然顺序)

双例集合体系:

----------| Map  双例集合的根接口。如果是实现了Map接口的集合类,具备的特点:存储的数据都是以键值对形式存在的,键不可重复,值可以重复
--------------| HashMap  底层是基于哈希表实现的,HashMap允许键和值为null,线程不安全,特点:存储速度块
--------------| TreeMap  基于红黑数(二叉树)数据结构实现的,线程不同步(即线程不安全),特点:会对元素经行排序存储
--------------| HashTable(了解即可)  线程安全


1、Map集合

在java中的map集合使用键(key)值(value)对 来保存数据,其中值(value)可以重复,但键(key)必须是唯一,也可以为空,但最多只能有一个key为空。

2、Map集合与collection集合的区别

1、Map一次存一对元素,一个是键,一个是值,键与值之间有对应(映射)关系;而Collection一次存一个元素。
    2、Map是双列集合,且是双例集合的跟接口;Collection是单列集合,且是单例集合的跟接口。

3、Map集合(接口)的一些方法

添加
   put(K key, V value):将指定的值与该映射中的指定键相关联,并添加到集合中
   putAll(Map<? extends K,? extends V> m):把指定集合中所有元素添加到指定的集合中(将指定集合的所有映射复制到此映射中)
删除
   remove(Object key):根据指定的键,删除对应的值
   clear():删除该集合中的所有元素
获取
   get(Object key):根据指定的键,获取对应的值
   size():返回该集合中键(元素)的个数
判断
   containsKey(Object key):判断该集合中是否包含指定的键
   containsValue(Object value):判断该集合中是否包含指定的值
   isEmpty():判断该集合是否为空
迭代
   keySet():
   values():
   entrySet():

4、实例

添加、删除、获取、判断的实例

 package com.dhb.collection;

 import java.util.HashMap;
import java.util.Map; /**
* @author DSHORE / 2018-5-29
*
*/
/* Map接口的一些方法
*
* 添加
* put(K key, V value):将指定的值与该映射中的指定键相关联,并添加到集合中
* putAll(Map<? extends K,? extends V> m):把指定集合中所有元素添加到指定的集合中(将指定集合的所有映射复制到此映射中)
* 删除
* remove(Object key):根据指定的键,删除对应的值
* clear():删除该集合中的所有元素
* 获取
* get(Object key):根据指定的键,获取对应的值
* size():返回该集合中键(元素)的个数
* 判断
* containsKey(Object key):判断该集合中是否包含指定的键
* containsValue(Object value):判断该集合中是否包含指定的值
* isEmpty():判断该集合是否为空
* */
public class Demo20 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
//添加
map.put("成龙","林凤娇");
map.put("文章","马伊琍");
map.put("汪峰","章子怡");
System.out.println(map);//返回值:{成龙=林凤娇, 文章=马伊琍, 汪峰=章子怡}
System.out.println("返回值:"+map.put("文章","王菲"));//返回值:马伊琍 解析:如果之前没有存在该键,那么返回的是null,如果之前就已经存在该键,那么返回值是该键之前的对应值
Map<String,String> map2 = new HashMap<String, String>();
map2.put("谢霆锋","张柏芝");
map2.put("杨振宇","翁帆");
map.putAll(map2);//把map2集合中的元素添加到map集合中
System.out.println(map);//返回值:{成龙=林凤娇, 文章=王菲, 汪峰=章子怡, 谢霆锋=张柏芝, 杨振宇=翁帆} //删除
System.out.println("根据指定的键,删除对应的值:"+map.remove("文章"));//返回值:王菲 解析:被第二条输出语句给替换了值
System.out.println(map);//返回值:{成龙=林凤娇, 汪峰=章子怡, 谢霆锋=张柏芝, 杨振宇=翁帆}
/*map.clear();//删除集合中的所有元素
System.out.println(map);//返回值:{} 已经删除成功,集合中没有元素了 */ //获取
System.out.println("根据指定的键,获取对应的值:"+map.get("汪峰"));//返回值:章子怡
System.out.println(map);//返回值:{成龙=林凤娇, 汪峰=章子怡, 谢霆锋=张柏芝, 杨振宇=翁帆}
System.out.println("获取map集合中键的个数:"+map.size());//返回值:4 //判断
System.out.println("判断map集合中是否包含指定的键:"+map.containsKey("文章"));//返回值:false
System.out.println("判断map集合中是否包含指定的值:"+map.containsValue("章子怡"));//返回值:true
System.out.println("判断map集合是否为空元素:"+map.isEmpty());//返回值:false
map.clear();//删除集合中的所有元素
System.out.println("判断map集合是否为空元素:"+map.isEmpty());//返回值:true
}
}

迭代的实例(三种遍历方式)

 package com.dhb.collection;

 import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; /**
* @author DSHORE / 2018-5-29
*
*/
/*
* 迭代:
* keySet()
* values()
* entrySet()
* */
public class Demo21 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String, String>();
//添加方法
map.put("汪峰","章子怡");
map.put("文章","马伊俐");
map.put("谢霆锋","张柏芝");
map.put("成龙","林凤娇");
System.out.println(map);//返回值:{成龙=林凤娇, 文章=马伊俐, 汪峰=章子怡, 谢霆锋=张柏芝} //map集合遍历方式一:使用keySet()方法进行遍历, 缺点:keySet值返回所有的键,没有值。
Set<String> keys=map.keySet(); //keySet把Map集合中的所有键都存储到了set集合中的对象返回
Iterator<String> it=keys.iterator();
while(it.hasNext()){
String key=it.next();
System.out.println("键:"+key+",值:"+map.get(key));
/* 返回值:
* 键:成龙,值:林凤娇
* 键:文章,值:马伊俐
* 键:汪峰,值:章子怡
* 键:谢霆锋,值:张柏芝
* */
} //map集合遍历方式二:使用values()方法进行遍历。 使用values方法遍历,缺点:values方法只能返回值,没有键
Collection<String> c=map.values();
Iterator<String> it2=c.iterator();
while(it2.hasNext()){
System.out.println("值:"+it2.next());
/* 返回值:
* 值:林凤娇
* 值:马伊俐
* 值:章子怡
* 值:张柏芝
* */
}
//map集合遍历方式三:使用entrySet()方法来遍历
Set<Map.Entry<String,String>> entrys=map.entrySet();
Iterator<Map.Entry<String,String>> it3=entrys.iterator();
while(it3.hasNext()){
Map.Entry<String, String> entry=it3.next();
System.out.println("键:"+entry.getKey()+",值:"+entry.getValue());
/* 返回值:
* 键:成龙,值:林凤娇
* 键:文章,值:马伊俐
* 键:汪峰,值:章子怡
* 键:谢霆锋,值:张柏芝
* */
}
}
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9104169.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础35 双例集合Map及其常用方法的更多相关文章

  1. java基础36 双例集合Map下的HashMap和TreeMap集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  2. java基础27 单例集合Collection及其常用方法

    1.集合 集合是存储对象数据的集合容器 1.1.集合比数组的优势 1.集合可以存储任意类型的数据,数组只能存储同一种数据类型的数据    2.集合的长度是变化的,数组的长度是固定的 1.2.数组:存储 ...

  3. java基础28 单例集合Collection下的List和Set集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  4. JAVA基础第五章-集合框架Map篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. 双列集合Map的嵌套遍历

    双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...

  6. 双列集合Map

    1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据    getKey---通过key获取数据    keySet- ...

  7. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  8. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  9. Java基础学习笔记十七 集合框架(三)之Map

    Map接口 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存 ...

随机推荐

  1. android中的style部分属性值介绍 --zz

    Android平台定义的主题样式: android:theme="@android:style/Theme.Dialog"   将一个Activity显示为对话框模式 •andro ...

  2. 统计学习方法:CART算法

    作者:桂. 时间:2017-05-13  14:19:14 链接:http://www.cnblogs.com/xingshansi/p/6847334.html . 前言 内容主要是CART算法的学 ...

  3. web项目中的执行流程参数传递详解

    还是从这个图开始讲解: struts2中有一个存放数据的中心:值栈.(值栈里面有map和对象栈) 首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到 ...

  4. composer安装第三方库出现需要认证信息等原因

    最近,在学习使用thinkcmf的时候,使用composer安装第三方类库,遇到了需要输入验证码的问题,援引https://laravel-china.org/topics/17893该链接中的讨论, ...

  5. Git5:Git操作远程仓库

    目录 说明 一.git clone 二.git remote 三.git fetch 四.git pull 五.git push 说明 Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个 ...

  6. K8S Api Server认证

    目录 认证类型 基于CA证书的双向认证 apiserver端配置 生成客户端私钥和证书 master核心组件与apiserver的认证方式 HTTP Token认证 HTTP Basic认证 kube ...

  7. 解决Pytohn安装第三方库出现read timed out 问题

    输入pip --default-timeout=100 install -U Packages 如pip --default-timeout=100 install -U Pillow

  8. Cloudstack 虚拟机实例(四)

    虚拟机实例 默认的模板并没有被下载 修改全局设置  secstorage.allowed.internal.sites 设置 ,二级存储ISO镜像和模板可以下载,IP网段 重启服务/etc/init. ...

  9. bzoj千题计划147:bzoj1207: [HNOI2004]打鼹鼠

    http://www.lydsy.com/JudgeOnline/problem.php?id=1207 dp[i] 表示打的最后一只鼹鼠是第i只,最多能打多少只鼹鼠 输出max(dp[i]) 错解: ...

  10. 为什么我要用 Node.js? 案例逐一介绍

    介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端, ...