黑马程序员——Java集合基础知识之Map

Map概念

要同时存储两个元素Key和Value,他们之间有映射关系,每个键不能重复,每个键只能映射到一个值。

当数据之间存在映射关系的时候,考虑使用Map集合。

Map常用方法

如果添加的键原来有值,后添加的值会覆盖前面的值,并返回之前的值。put会返回来先添加的值,后添加的值会覆盖原有的值。

Map tm =new TreeMap();

tm.put (key, value);//MAP没有add

tm.remove (key) ;//去除一个key和对应的value,若不存在key返回null

tm.get (key) ;//返回该Key的value

tm.values (); //返回所有value的集合

tm.keySet (); //返回key的Set集合

HashTable
底层是哈西数据结构,不可以存入null键null值,线程同步。

HashMap
底层是哈西表数据结构,允许使用nul键和null值,线程不同步。效率高。

TreeMap
 底层是二叉树结构,不同步,可以给键排序。

和Set很像,Set底层使用的就是Map结构。其实是平行x轴的函数。

Map元素取出方式

1.keyset()
返回set集合。迭代器:取出了set集合用迭代器取键。。。get(键)将map集合转化成set,再取键取值。

2.EntrySet()
里面存放的时是关系,把关系取出来。返回Map.entry,将map集合中的映射关系存入到Set集合中。,entry接口是Map接口里面内部接口,Map需要直接访问MapSet中的数据,内部嵌套类,没有Map就没有Map.entry.

Map<String , String > tm =new TreeMap ();

tm.put ("b李白", "唐") ;

tm.put ("a李白", "唐") ;

tm.put ("杜甫", "唐") ;

tm.put ("苏轼", "宋") ;

//利用keyset()方法来获取键

Set<String > ketset =tm .keySet ();

Iterator<String > it =ketset .iterator ();

while(it .hasNext ()){

String
key =it .next ();

System .out.println( key+ "="+ tm. get(key ));

}

//利用entrySet()方法获取Map的键值对

Set <Map .Entry <String , String >> enterset =tm .entrySet ();

for(Map .Entry <String , String > me :enterset )

System .out.println( me. getKey()+"=="+me.getValue()) ;

}

}

Map.Entry里面存放的时映射关系,这个接口里面有gekKey和getValue的方法。

HashMap()和TreeMap()

HashMap基于hashCode()的实现,查找速度最优,TreeMap是根据键的自然顺序排列的,排列的顺序是通过comparable或者comparator决定,treeMap是唯一具有subMap的Map。

//定义TreeMap

Map <String , String > tm = new TreeMap <String , String >() ;

tm .put ( "b李白", "唐") ;

tm .put ( "a李白", "唐") ;

tm .put ( "杜甫", "唐") ;

tm .put ( "苏轼", "宋") ;

//定义一个HashMap

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

hm .putAll ( tm) ;//将 tm中的元素全部装入 hm中

System .out .println ( tm) ;

System .out .println ( hm) ;

/*TreeMap: {a李白=唐, b李白=唐, 杜甫=唐,
苏轼=宋}

HashMap:
{杜甫=唐, 苏轼=宋, a李白=唐, b李白=唐}*/

结果是显而易见的,TreeMap按照字母的自然顺序排列了。

黑马程序员——Java集合基础知识之Map,布布扣,bubuko.com

时间: 2024-10-20 07:01:59

黑马程序员——Java集合基础知识之Map的相关文章

黑马程序员——Java集合基础知识之Collection

集合基础知识--Collection Java中集合框架由常用的Collection接口和Map接口组成,而Collection接口又有两个子接口,是List接口和Set接口,常用的集合框架由这三个类组成. List接口的功能方法 List的使用最为简单,创建集合,通过add方法添加元素,get方法获取元素,通过迭代器获取元素.List接口存放的数据无序的,添加速度快,但是查询速度慢,因为查询的时候必须遍历,每次都重头开始,效率较低.常用实现类有ArrayList,LinkedList. Lis

黑马程序员——java多线程基础知识1

多线程 进程是一个正在执行的程序. cpu在同时执行这些程序,其实是跳跃式的,做快速的切换,时间很短.一个进程可能存在多条路径.迅雷的多路径.每一个进行执行都有一个执行顺序,该顺序是一个执行路径,或这叫一个控制单元.每一个进程至少有一个线程,线程就是进程中的一个独立的控制单元,线程控制进程的执行.jvm启动的时候会有一个进程就叫做java,exe,该进程中至少有一个线程在控制Java程序的执行 ,而且该线程的执行代码在 主函数中.该线程称为主线程.虚拟机至少也有两个线程,一个主线程执行,另一个负

黑马程序员——Java多线程基础知识2

多线程协同 线程间的通讯:我们对资源的操作动作不同,比如说两个卡车一个拉煤一个装煤.但是他们共享了一个资源. 怎么样把这个资源拿出来?怎样把车装满?这个资源当然是一个类,他里面的组成元素就是对象!!现在我们就要有操作对象的思想了,我用对象把这车装满,现在一车装一个对象. 等待唤醒机制: 用的不是sleep是wait.flag标记,这是两人沟通的方式.其实每个标记就要做一次等待或者notify,判断wait,改值notify.线程池.notify唤醒里面的线程,按顺序唤醒.wait和notify必

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

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

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

黑马程序员——Java最基础纲要式总结

一.计算机基础知识 1. 软件开发: *什么是软件? 软件是一系列按照特定顺序组织的计算机数据和指令的集合.程序设计的最终结果是软件 系统软件:系统软件为计算机使用提供最基本的功能:如:DOS,Windows,Linux,Unix,Mac,Android,IOS 2.人机交互 图形化界面: 命令行方式 3.Java语言特征(跨平台) Java通过java虚拟机跨平台(JVM) 4.JDK.JRE.JVM之间的关系 JDK是整个java和核心,包括java的运行环境.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集合框架学习总结

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

黑马程序员——Java语法基础

一.关键字 1.定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有的字母都为小写. 2.分类 (1)用于定义数据类型的关键字:byte.short.int.long.float.double.char.boolean.class.interface.void (2)用于定义数据类型值的关键字:true.false.null (3)用于定义流程控制的关键字:if.else.switch.case.default.for.while.do.continue.break.ret