java学习笔记—集合之Map集合
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px }
li.li2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" }
li.li3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times }
li.li4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px }
li.li5 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px Times }
li.li6 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px "Songti SC" }
li.li7 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px Times; min-height: 14.0px }
span.s1 { font: 12.0px "Songti SC" }
span.s2 { font: 12.0px Times }
span.s3 { font: 24.0px Times; color: #4e9072 }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }
Map集合
Map接口概述:
Java.util.Map<k,v>接口:是一个双列集合
Map集合的特点:
- 是一个双列集合,有两个泛型key和value,使用的时候key和value的数据类型可 以相同。也可以不同
- Key不允许重复的,value可以重复的;
- 一个key只能对应一个value
Map常用实现类概述:
Java.util.HashMap<k,v> 集合implements Map<k,v>接口
HashMap集合的特点:
- 底层是一个哈希表(数组+单向链表):查询快,增删快
- 是一个无序集合
Map接口中的常用方法:
- 1.V get(key) 根据key值返回对应的value值,key值不存在则返回null
- 2.V put(key , value); 往集合中添加元素(key和value)
- 注意:添加的时候,如果key不存在,返回值null
- 如果Key已经存在的话,就会新值替换旧值,返回旧值
- 3. V remove(key); 删除key值对应的键值对;如果key不存在 ,删除失败。返回值为 null,如果key存在则删除成功,返回值为删除的value
Map遍历方式
- 第一种方式:通过key找value的方式:
Map中有一个方法:
Set <k> keySet(); 返回此映射包含的键的Set 集合
操作步骤:
1.调用Map集合的中方法keySet,把Map集合中所有的健取出来,存储到Set集合中
2.遍历Set集合,获取Map集合中的每一个健
3.通过Map集合中的方法get(key),获取value值
可以使用迭代器跟增强for循环遍历
第二种方式:Map集合遍历键值方式
Map集合中的一个方法:
Set<Map.Entry<k,v>> entrySet(); 返回此映射中包含的映射关系的Set视图
使用步骤
* 1.使用Map集合中的方法entrySet,把键值对(键与值的映射关系),取出来存储到Set 集合中
* 2.遍历Set集合,获取每一个Entry对象
* 3.使用Entry对象中的方法getKey和getValue获取健和值
可以使用迭代器跟增强for循环遍历
HashMap存储自定义类型:
使用HashMap储存自定义类形式,因为要保证key的唯一性。需要自定义类重写 hashCode()跟equals()方法;
LinkedHashMap
Java.util.LinkedHashMap<k,v> 集合extends HashMap<k,v> implements Map<k,v>
特点:
1.底层是一个哈希表(数组+单向链表)+链表
2.是一个有序集合
Hashtable
Map 的实现类 Hashtable
底层数据结构是哈希表,特点和 hashMap 是一样的
Hashtable 是线程安全的集合,是单线程的,运行速度慢
HashMap 是线程不安全的集合,是多线程的,运行速度快
Hashtable 命运和 Vector 是一样的,从 JDK1.2 开始,被更先进的 HashMap 取代
HashMap 允许存储 null 值,null 健
Hashtable 不允许存储 null 值,null 健
Hashtable 他的孩子,子类 Properties 依然活跃在开发舞台
Properties
Java.util.Properties 集合extends Hashtable<k,v> 集合
Properties 集合特点:
- Properties集合也是一个双列集合,key跟value都已经被内置为String类型
- Properties集合是一个唯一和IO流相结合的集合
- 可以将集合中存储的临时数据,持久化到硬盘的文件中储存
- 可以把文件中储存对的键值对,读取到集合中使用
Properties集合的基本操作:添加数据,遍历集合
Key和value都已经被内置为String类型。里面包含了一些和String类的相关方法
- Object setProperty(String key ,String value) 往集合中添加键值对,调用Hashtable的方法put添加
- String getProperty(String key ) ,通过key获取value的值,相当于Map集合中的get(key) 方法
- Set<String > stringPropertyNames()返回此属性列表的键集。相当于Map集合中的keySet()方法;
Properties类的load方法:
可以把文件中存储的键值对,读取到集合中使用
- void load(Reader reader)
- void load(InputStream inStream)
- * 参数:
- Reader reader:字符输入流,可以使用FileReader
- InputStream inStream:字节输入流,可以使用FileInputStream
- *
- * 操作步骤:
- 1.创建Properties集合对象
- 2.创建字符输入流FileReader对象,构造方法中绑定要读取的数据源
- 3.使用Properties集合中的方法load,把文件中存储的键值对,读取到集合中使 用
- 4.释放资源
- 5.遍历Properties集合
- *
- * 注意:
- 1.流使用Reader字符流,可以读取中文数据
- 2.流使用InputStream字节流,不能操作中文,会有乱码
- 3.Properties集合的配置文件中,可以使用注释单行数据,使用#
- 4.Properties集合的配置文件中,key和value默认都是字符串,不用添加""(画蛇 添足)
- 5.Properties集合的配置文件中,key和value的连接符号可以使用=,也可以使用 空格
Properties类的store方法使用:
/*
* 可以把集合中存储的临时数据,持久化都硬盘的文件中存储
* void store(Writer writer, String comments)
* void store(OutputStream out, String comments)
* 参数:
* Writer writer:字符输出流,可以使用FileWriter
* OutputStream out:字节输出流,可以使用FileOutputStream
* String comments:注释,解释说明存储的文件,不能使用中文(乱码),默认编码格式为 Unicode编码
* 可以使用""空字符串
* 操作步骤:
* 1.创建Properties集合,往集合中添加数据
* 2.创建字符输出流FileWriter对象,构造方法中绑定要写入的目的地
* 3.调用Properties集合中的方法store,把集合中存储的临时数据,持久化都硬盘的文 件中存储
* 4.释放资源
*
* 注意:
* 1.流使用Writer字符流,可以写入中文数据的
* 2.流使用OutputStream字节流,不能操作中文,会有乱码
* 3.Propertie集合存储的文件,一般都以.properties结尾(程序员默认)
方法的可变参数
Jdk1.5 之后出现的新特性
作用:
定义方法时,方法参数的类型确定,但是个数不确定,可以使用可变参数
格式:
修饰符 返回值类型 方法名(数据类型...变量名){
}
使用注意:
- 可变参数的底层原理就是一个数组
- 传递不同个数的参数,会创建不同长度的数组,接收这些参数可变参数的方法,调用的时候,可以不传递参数,传递任意个参数
注意事项:
- 一个方法的参数,只能定义一个可变参数
- 如果方法的参数有多个,那么可变参数必须写在列表的最后一位
Collections集合工具类
Java.util.Collections 集合工具类
Collections私有了无参构造方法,里面的方法全是静态的,通过类名可以直接使用
Collections 常用方法:
1. static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换,(打乱集合中元素的顺序)
2.static void sort(List<?> list ) 根据元素的自然顺序,对指定列表按照升序进行排序(对集合进行升序排序)
java学习笔记—集合之Map集合的更多相关文章
- Java学习笔记24(Map集合)
Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Android(java)学习笔记104:Map集合的遍历之键找值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Android(java)学习笔记103:Map集合的获取功能
package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; i ...
- Android(java)学习笔记102:Map集合功能概述
下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...
- Android(java)学习笔记44:Map集合的遍历之键值对对象找键和值
1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01; import java.util.HashMap; import java.util.Map; impor ...
- Android(java)学习笔记43:Map集合的遍历之键找值
1. Map集合的遍历之键找值 package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.u ...
- Android(java)学习笔记42:Map集合的获取功能
1. Map集合的获取功能: package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import ...
- Android(java)学习笔记41:Map集合功能概述
1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...
随机推荐
- Sudoku Killer
Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...
- Sequence one
Problem Description Search is important in the acm algorithm. When you want to solve a problem by us ...
- Chinese Rings
Chinese Rings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- html网页中加载js脚本 下载下来是乱码(文件编码格式)
问题描述: 在一个index.html网页中,引入了jquery脚本,但是却出现错误,提示$ is not defined <!DOCTYPE html> <html lang=&q ...
- linux-echo
echo 更新时间: 2017-10-11-11:55:24 echo:打印输出内容 参数选择 -e 激活转义字符 命令:echo 123 ,此命令 就会输出123 命令: echo -e &q ...
- day3--远程链接Linux
互联网上的计算机,都会有一个唯一的32位的地址,IP地址 我们访问服务器,就必须通过这个IP地址 局域网里也有预留的IP地址,192/10/172开头.局域网的IP地址也是唯一的. NAT模式,电脑宿 ...
- 使用qt制作一个简单的计算器
前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...
- 诸葛马前课andoid app 应用
前段时间学了点安卓开发的知识,也在同时,陪家人看了<新闺蜜时代 >的后面几集,其中,周小北提到了诸葛马前课. 于是网上查了些资料,学习了一下马前课的计算方法,本着程序服务生活的原则,省去不 ...
- Xshell 的安装教程
Xshell就是一个远程控制RHEL的软件:其他的还有很多,用什么都无所谓(根据公司情况). 下面我们来安装下这个工具: 双击exe 点下一步: 选 免费的 然后下一步:(免费的功能足够用了) 点接受 ...
- 激光相机数据融合(3)--KITTI数据集
KITTI数据集提供了双目图像,激光数据,和imu/gps位置信息,其中还包括了大量的算法.下载地址为:http://www.cvlibs.net/datasets/kitti/raw_data.ph ...