Java集合Map(四)
****************************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(四)相关推荐
- Java集合Map,set, list 之间的转换
Java集合Map,set, list 之间的转换 前言: 通过思维导图复习联系,看到一个HashMap排序题上机题之后有的一个感想,题目如下,看看你能时间出来么? 已知一个HashMap<In ...
- Java集合——Map接口学习总结
一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...
- Java集合 —— Map集合
Collection接口包含List接口与Set接口 --List 元素有序(存储顺序和取出顺序一致),元素可以重复 实现List接口的三个具体类有 ArrayList,vector,LinkedLi ...
- Java——集合(Map集合的两种迭代)
一,Map集合的第一种迭代 Map集合的第一种迭代,通过get(key)方法,根据键去获取值 package com.wsq.map;import java.util.HashMap; import ...
- 终于,我读懂了所有Java集合——map篇
首先,红黑树细节暂时撸不出来,所以没写,承诺年前一定写 HashMap (底层是数组+链表/红黑树,无序键值对集合,非线程安全) 基于哈希表实现,链地址法. loadFactor默认为0.75,thr ...
- java集合——Map
集合--Map Map家族 实现类: HashMap LinkedHashMap Hashtable ConcurrentHashMap TreeMap Properties 1.HashMap 1. ...
- java集合 — — Map集合
十.Map集合 10.1.概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一对应的关系,就叫做映射.Java提供了专门的集台类用来存放这种对 ...
- Java集合(四) LinkedList详解
在上篇文章Java集合(三) ArrayList详解的学习和源码分析中,我们知道ArrayList是以数组实现,它的优势是查询性能高,劣势是按顺序增删性能差.如果在不确定元素数量的情况时,不建议使 ...
- 【Java集合系列四】HashSet和LinkedHashSet解析
2017-07-29 16:58:13 一.简介 1.Set概念 Set可以理解为集合,非常类似数据概念中的集合,集合三大特征:1.确定性:2.互异性:3.无序性,因此Set实现类也有类似的特征. 2 ...
最新文章
- 最新阿里Java技术面试题,看这一文就够了!
- 5秒到1秒,记一次效果“非常”显著的性能优化
- iOS中 支付宝钱包详解/第三方支付 韩俊强的博客
- 南京大学「自然指数」超越清华北大,位列全国高校第一、世界第七,突显学术实力...
- Java NIO系列教程(三) Buffer
- 计算硼原子的基态能级B---库仑排斥能
- Leetcode 349. 两个数组的交集 (每日一题 20211014)
- 注释驱动的 Spring cache 缓存介绍--转载
- js自动触发onclick_每日一题JS中最基本的this情况分析
- recyclerview 分组_Android使用RecyclerView实现跨列分组
- [渝粤教育] 中国地质大学 马克思主义基本原理 复习题
- 普通人学python有意义吗_学python难吗
- (计算机组成原理)第二章数据的表示和运算-第二节7:详解C语言中的强制类型转换
- Pytorch —— 权值初始化
- uwsgi03----直接部署
- sqlalchemy 增删改
- 腾讯内部转岗_腾讯微博即将关停,网友:竟然还活着?
- 【转】android fragment 博客 学习
- ad16自动布线设置规则_AD16快捷方式和常规设置
- 流体力学(量纲分析和流动相似原理)