****************************Map**********************************

Map

Hashtable HashMap 1.键值对 2.没有迭代顺序 SortedMap

Properties LinkedHashMap 带有迭代顺序的HashMap NavigableMap

TreeMap

********************************HashMap***************************************

一.什么是Map

字典 键值对 一一对应的关系

key value

放的时候 放一组键值对,放入到map以后 可以通过key来查找value

需求: 根据学科查询该学科的考试成绩

演示代码:

package com.chapter12.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月19日 上午9:24:43
* 功能:演示HashMap 字典 键值对 一一对应的关系
*/
public class TestHashMap {

public static void main(String[] args) {
//需求: 根据学科查成绩
Map<String,Integer> map = new HashMap<String,Integer>();

Integer i = map.put("java", 100);
map.put("数据结构", 90);
map.put("操作系统", 80);

//返回值: 如果添加进去的时候 map中没有所添加的key 返回null
//如果之前已经有了相同的key 返回这个key所对应的之前的value值
/*Integer score = map.put("操作系统", 85);//key不变 value覆盖

Integer osScore = map.get("操作系统");

System.out.println(osScore);*/

//遍历map

Set<String> keySet = map.keySet();

for(String key:keySet){
System.out.println(key + "=" + map.get(key));
}
}
}

********************************LinkedHashMap***************************************

带有迭代顺序的HashMap

****************************需求:根据DVD查询影评***********************************

package com.chapter12.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.chapter12.DVD;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月19日 上午10:00:54
* 功能:根据电影 查询影评
*/
public class TestHashMapDVD {

public static void main(String[] args) {
Map<DVD,String> map = new HashMap<DVD,String>();

DVD dvd1 = new DVD(1,"归来",80);
DVD dvd2 = new DVD(2,"超凡蜘蛛侠2",50);
DVD dvd3 = new DVD(3,"我的播音系女友",40);
DVD dvd4 = new DVD(4,"X战警",30);

DVD dvd5 = new DVD(5,"归来",80);

//Set 使用hashCode()和equals()去重 如果它俩都相同 是意义上同一个对象 第2个会被去掉

//HashMap 使用hashCode()和equals()判断是否是同一个key 如果hashCode()和equals()都相同 是同一个key
//key 不变 value覆盖
map.put(dvd1, "好看1");
map.put(dvd2, "好看2");
map.put(dvd3, "好看3");
map.put(dvd4, "好看4");

map.put(dvd5, "好看11111111111111");
Set<DVD> keySet = map.keySet();

/*for(DVD key:keySet){
System.out.println(key + "=" + map.get(key));
}*/

//查询: 归来的影评

DVD dvd = new DVD(10,"归来",80);

String yingping = map.get(dvd);
System.out.println(yingping);
}
}

****************************Hashtable和HashMap的区别**********************************

***Hashtable 早期的API JDK1.0 就已经有了

1. Hashtable 是线程安全版本的HashMap

2. Hashtable 的key 和value都不允许为null

HashMap 可以由一个null 的key 和 多个null的value

演示代码:

package com.chapter12;

import java.util.HashMap;
import java.util.Map;

public class TestHashtable {

public static void main(String[] args) {

Map<String,String> map = new HashMap<String,String>();

map.put(null, "aaa");

map.put(null, "bbb");

map.put("aaa", null);
map.put("bbb", null);
}
}

********************************TreeMap***************************************

可以排序的Map,按照key排序

TreeMap如何判断是同一个key,使用compareTo()进行判断,如果compareTo()为0,认为是同一个key

第二个key 不变 value覆盖

HashMap 和 HashSet

TreeMap 和 TreeSet

********************************HashSet的实质***************************************

底层就是HashMap

Set<DVD> set = new HashSet<DVD>();

set.add(dvd1);

map.put(dvd1,obj);

public class HashSet<Object>{

private static final Object obj = new Object();

Map<DVD,Object> map = new HashMap<DVD,Object>();

public boolean add(Object e) {
return map.put(e, PRESENT)==null;
}
}

*****************************************泛型*******************************************

定义类的时候:类型的形参

方法的形参、实际

Set<String> set = new HashSet<String>();//<String> 实参

泛型比Object好处: Object虽然可以添加任何类型,但是不太安全,添加进去以后,会向上转型成Object,

取出来的时候需要向下转型,向下转型不安全,可能发生ClassCastException,而且还比较麻烦...

为了保证程序的健壮性和易用性,出现了泛型...

转载于:https://www.cnblogs.com/MrTanJunCai/p/9906817.html

Java集合Map(四)相关推荐

  1. Java集合Map,set, list 之间的转换

    Java集合Map,set, list 之间的转换 前言: 通过思维导图复习联系,看到一个HashMap排序题上机题之后有的一个感想,题目如下,看看你能时间出来么? 已知一个HashMap<In ...

  2. Java集合——Map接口学习总结

    一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...

  3. Java集合 —— Map集合

    Collection接口包含List接口与Set接口 --List 元素有序(存储顺序和取出顺序一致),元素可以重复 实现List接口的三个具体类有 ArrayList,vector,LinkedLi ...

  4. Java——集合(Map集合的两种迭代)

    一,Map集合的第一种迭代 Map集合的第一种迭代,通过get(key)方法,根据键去获取值 package com.wsq.map;import java.util.HashMap; import ...

  5. 终于,我读懂了所有Java集合——map篇

    首先,红黑树细节暂时撸不出来,所以没写,承诺年前一定写 HashMap (底层是数组+链表/红黑树,无序键值对集合,非线程安全) 基于哈希表实现,链地址法. loadFactor默认为0.75,thr ...

  6. java集合——Map

    集合--Map Map家族 实现类: HashMap LinkedHashMap Hashtable ConcurrentHashMap TreeMap Properties 1.HashMap 1. ...

  7. java集合 — — Map集合

    十.Map集合 10.1.概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一对应的关系,就叫做映射.Java提供了专门的集台类用来存放这种对 ...

  8. Java集合(四) LinkedList详解

      在上篇文章Java集合(三) ArrayList详解的学习和源码分析中,我们知道ArrayList是以数组实现,它的优势是查询性能高,劣势是按顺序增删性能差.如果在不确定元素数量的情况时,不建议使 ...

  9. 【Java集合系列四】HashSet和LinkedHashSet解析

    2017-07-29 16:58:13 一.简介 1.Set概念 Set可以理解为集合,非常类似数据概念中的集合,集合三大特征:1.确定性:2.互异性:3.无序性,因此Set实现类也有类似的特征. 2 ...

最新文章

  1. 最新阿里Java技术面试题,看这一文就够了!
  2. 5秒到1秒,记一次效果“非常”显著的性能优化
  3. iOS中 支付宝钱包详解/第三方支付 韩俊强的博客
  4. 南京大学「自然指数」超越清华北大,位列全国高校第一、世界第七,突显学术实力...
  5. Java NIO系列教程(三) Buffer
  6. 计算硼原子的基态能级B---库仑排斥能
  7. Leetcode 349. 两个数组的交集 (每日一题 20211014)
  8. 注释驱动的 Spring cache 缓存介绍--转载
  9. js自动触发onclick_每日一题JS中最基本的this情况分析
  10. recyclerview 分组_Android使用RecyclerView实现跨列分组
  11. [渝粤教育] 中国地质大学 马克思主义基本原理 复习题
  12. 普通人学python有意义吗_学python难吗
  13. (计算机组成原理)第二章数据的表示和运算-第二节7:详解C语言中的强制类型转换
  14. Pytorch —— 权值初始化
  15. uwsgi03----直接部署
  16. sqlalchemy 增删改
  17. 腾讯内部转岗_腾讯微博即将关停,网友:竟然还活着?
  18. 【转】android fragment 博客 学习
  19. ad16自动布线设置规则_AD16快捷方式和常规设置
  20. 流体力学(量纲分析和流动相似原理)

热门文章

  1. node + ts读取csv文件为二维数组
  2. AcWing 1813. 方块游戏(暴力枚举)
  3. AcWing 2041. 干草堆(差分)
  4. edge chrome Android,微软Edge浏览器安卓版已上架:采用Chrome引擎
  5. tcp 协议中发送窗口的大小应该是_TCP 协议中的三次握手与四次挥手
  6. sharepoint 列表查询范围
  7. 26期20180718 rsync
  8. 量子力学或证实人类生死并无意义
  9. Spark Tungsten揭秘 Day3 内存分配和管理内幕
  10. 这些年,我们无法忘却的jQuery日历插件