HashMap集合的性状,Map接口概述

Map集合

Map集合

Map接口概述:

Map接口概述:

  Java.util.Map<k,v>接口:是二个双列集合

  Java.util.Map<k,v>接口:是三个双列集合

  Map集合的特色:

  Map集合的表征:

  • 是2个双列集合,有多个泛型key和value,使用的时候key和value的数据类型可
    以同等。也足以分裂
  • Key不容许再度的,value能够重复的;
  • 3个key只可以对应贰个value
  • 是贰个双列集合,有七个泛型key和value,使用的时候key和value的数据类型可
    以同等。也得以不相同
  • Key不允许再次的,value能够再一次的;
  • 1个key只可以对应多少个value

 

 

Map常用完毕类概述:

Map常用完毕类概述:

  Java.util.HashMap<k,v> 集合implements
Map<k,v>接口

  Java.util.HashMap<k,v> 集合implements
Map<k,v>接口

  HashMap集合的特色:

  HashMap集合的表征:

  • 底层是一个哈希表(数组+单向链表):查询快,增加和删除快
  • 是叁个冬天汇聚
  • 底层是2个哈希表(数组+单向链表):查询快,增加和删除快
  • 是多个九冬聚集

 

 

Map接口中的常用方法:

Map接口中的常用方法:

  • 1.V   get(key)  依据key值重返对应的value值,key值不存在则赶回null
  • 2.V  put(key , value); 往集合中添澳成分(key和value)
  • 1.V   get(key)  依据key值再次回到对应的value值,key值不存在则赶回null
  • 2.V  put(key , value); 往集合中添日成分(key和value)

    •   注意:添加的时候,若是key不存在,再次回到值null
    •   假诺Key已经存在的话,就会新值替换旧值,重临旧值
    1. V  remove(key); 删除key值对应的键值对;假诺key不存在 ,删除失利。再次来到值为 null,假诺key存在则删除成功,再次来到值为除去的value
    •   注意:添加的时候,借使key不设有,重返值null
    •   假如Key已经存在的话,就会新值替换旧值,重临旧值
    1. V  remove(key); 删除key值对应的键值对;若是key不存在 ,删除失败。重临值为 null,假诺key存在则删除成功,再次来到值为除去的value

 

 

Map遍历格局

Map遍历格局

  • 率先种办法:通过key找value的法子:
  • 先是种方法:通过key找value的点子:

    Map中有叁个艺术:

    Map中有二个方法:

      Set <k> 
keySet();  再次来到此映射包罗的键的Set 集合

      Set <k> 
keySet();  再次回到此映射包蕴的键的Set 集合

     操作步骤:

     操作步骤:

      1.调用Map集合的中方法keySet,把Map集合中全体的健取出来,存款和储蓄到Set集合中

      1.调用Map集合的中方法keySet,把Map集合中全数的健取出来,存款和储蓄到Set集合中

       2.遍历Set集合,获取Map集合中的每3个健

       2.遍历Set集合,获取Map集合中的每个健

 
    3.由此Map集合中的法子get(key),获取value值

 
    3.透过Map集合中的法门get(key),获取value值

   能够应用迭代器跟增强for循环遍历

   能够运用迭代器跟增强for循环遍历

 

 

  第①种艺术:Map集合遍历键值情势

  第二种方法:Map集合遍历键值格局

    Map集合中的叁个办法:

    Map集合中的1个措施:

    Set<Map.Entry<k,v>> entrySet();
再次回到此映射中包括的投射关系的Set视图

    Set<Map.Entry<k,v>> entrySet();
重返此映射中包蕴的炫耀关系的Set视图

  使用手续

  使用手续

     * 1.利用Map集合中的方法entrySet,把键值对(键与值的照射关系),取出来存款和储蓄到Set
集合中

     * 1.选拔Map集合中的方法entrySet,把键值对(键与值的炫耀关系),取出来存款和储蓄到Set
集合中

     * 2.遍历Set集合,获取每三个Entry对象

     * 2.遍历Set集合,获取每1个Entry对象

     * 3.选取Entry对象中的方法getKey和getValue获取健和值

     * 3.应用Entry对象中的方法getKey和getValue获取健和值

  能够动用迭代器跟增强for循环遍历

  能够使用迭代器跟增强for循环遍历

 

 

 

 

HashMap存款和储蓄自定义类型:

HashMap存款和储蓄自定义类型:

  使用HashMap储存自定义类情势,因为要保管key的唯一性。须要自定义类重写 hashCode()跟equals()方法;

  使用HashMap储存自定义类情势,因为要保险key的唯一性。必要自定义类重写 hashCode()跟equals()方法;

 

 

LinkedHashMap

LinkedHashMap

  Java.util.LinkedHashMap<k,v> 集合extends
HashMap<k,v> implements Map<k,v>

  Java.util.LinkedHashMap<k,v> 集合extends
HashMap<k,v> implements Map<k,v>

  特点:

  特点:

    1.底层是1个哈希表(数组+单向链表)+链表

    1.底层是2个哈希表(数组+单向链表)+链表

    2.是二个不变聚集

    2.是一个依样画葫芦聚集

 

 

Hashtable

Hashtable

  Map 的贯彻类 Hashtable

  Map 的完毕类 Hashtable

     底层数据结构是哈希表,特点和 hashMap
是一样的

     底层数据结构是哈希表,特点和 hashMap
是同等的

     Hashtable 是线程安全的会面,是单线程的,运转速度慢

     Hashtable 是线程安全的聚集,是单线程的,运转速度慢

     HashMap 是线程不安全的成团,是四线程的,运营速度快

     HashMap 是线程不安全的聚合,是二十四线程的,运维速度快

 

 

     Hashtable 命局和 Vector 是如出一辙的,从 JDK1.2 初阶,被更上进的 HashMap 取代

     Hashtable 时局和 Vector 是同一的,从 JDK1.2 初步,被更进步的 HashMap 取代

 

 

     HashMap 允许存款和储蓄 null 值,null

     HashMap 允许存储 null 值,null

     Hashtable 不容许存储 null 值,null 健

     Hashtable 不允许存款和储蓄 null 值,null 健

 

 

     Hashtable 他的孩子,子类
Properties 照旧活跃在支付舞台

     Hashtable 他的儿女,子类
Properties 依旧活泼在支付舞台

 

 

 

 

 

 

Properties

Properties

Java.util.Properties 集合extends Hashtable<k,v>
集合

Java.util.Properties 集合extends Hashtable<k,v>
集合

Properties 集合特点:

Properties 集合特点:

  • Properties集合也是八个双列集合,key跟value都已经被平放为String类型
  • Properties集合是一个唯一和IO流相结合的聚合
  • Properties集合也是三个双列集合,key跟value都已经被内置为String类型
  • Properties集合是多个唯一和IO流相结合的联谊

  • 能够将聚合中储存的一时半刻数据,持久化到硬盘的文书中贮存
  • 能够把公文中储存对的键值对,读取到聚集中运用
  • 能够将聚合中蕴藏的一时半刻数据,持久化到硬盘的公文中储存
  • 能够把文件中储存对的键值对,读取到集结中选拔

 

 

  Properties集合的基本操作:添加数码,遍历集合

  Properties集合的基本操作:添加数量,遍历集合

    Key和value都已经被放置为String类型。里面含有了部分和String类的相关措施

    Key和value都已经被平放为String类型。里面富含了一些和String类的相关方法

 

 

  1. Object setProperty(String key ,String value) 往集合中添加键值对,调用Hashtable的主意put添加
  2. String getProperty(String key ) ,通过key获取value的值,相当于Map集合中的get(key) 方法
  3. Set<String >  
    stringPropertyNames()重返此属性列表的键集。相当于Map集合中的keySet()方法;
  1. Object setProperty(String key ,String value) 往集合中添加键值对,调用Hashtable的章程put添加
  2. String getProperty(String key ) ,通过key获取value的值,相当于Map集合中的get(key) 方法
  3. Set<String >  
    stringPropertyNames()重回此属性列表的键集。约等于Map集合中的keySet()方法;

  Properties类的load方法:

  Properties类的load方法:

    能够把公文中蕴藏的键值对,读取到集结中运用

    可以把文件中存款和储蓄的键值对,读取到集结中采纳

  1. void load(Reader reader)  
  2. void load(InputStream inStream)  
  1. void load(Reader reader)  
  2. 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的连日符号能够选拔=,也得以采取 空格
  • * 参数:
  • 里德r 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方法应用:

Properties类的store方法应用:

/*

/*

*
能够把集合中蕴藏的一时半刻数据,持久化都硬盘的公文中储存

*
能够把集合中存款和储蓄的临时数据,持久化都硬盘的公文中蕴藏

* void store(Writer writer, String
comments)  

* void store(Writer writer, String
comments)  

* void store(OutputStream out, String
comments)

* void store(OutputStream out, String
comments)

* 参数:

* 参数:

*  Writer
writer:字符输出流,能够利用FileWriter

*  Writer
writer:字符输出流,能够运用FileWriter


OutputStream out:字节输出流,能够动用FileOutputStream


OutputStream out:字节输出流,可以使用FileOutputStream

*  String
comments:注释,解释表达存款和储蓄的公文,不能够动用中文(乱码),私下认可编码格式为 Unicode编码

*  String
comments:注释,解释表达存款和储蓄的文件,无法利用汉语(乱码),暗中同意编码格式为 Unicode编码

* 能够选择””空字符串

* 能够动用””空字符串

* 操作步骤:

* 操作步骤:

* 1.开立Properties集合,往集合中添加多少

* 1.创办Properties集合,往集合中添加多少

* 2.开立字符输出流FileWriter对象,构造方法中绑定要写入的指标地

* 2.创立字符输出流FileWriter对象,构造方法中绑定要写入的目标地

* 3.调用Properties集合中的方法store,把集合中储存的权且数据,持久化都硬盘的文
件中贮存

* 3.调用Properties集合中的方法store,把集合中储存的权且数据,持久化都硬盘的文
件中贮存

* 4.自由财富

* 4.刑释财富

* 注意:

* 注意:

* 1.流应用Writer字符流,能够写入中文数据的

* 1.流施用Writer字符流,能够写入粤语数据的

* 2.流选取OutputStream字节流,无法操作汉语,会有乱码

* 2.流应用OutputStream字节流,不能够操作粤语,会有乱码

*
3.Propertie集聚存款和储蓄的公文,一般都是.properties结尾(程序员暗许)

*
3.Propertie集结存款和储蓄的文本,一般都是.properties结尾(程序员私下认可)

 

 

 

 

方法的可变参数

主意的可变参数

  Jdk1.5 之后现身的新特征

  Jdk1.5 之后出现的新性子

  作用:

  作用:

    定义方法时,方法参数的连串鲜明,可是个数不鲜明,能够动用可变参数

    定义方法时,方法参数的门类鲜明,不过个数不明确,能够利用可变参数

 

 

  格式:

  格式:

    修饰符  重回值类型 
方法名(数据类型…变量名){

    修饰符  重返值类型 
方法名(数据类型…变量名){

    }

    }

  使用注意:

  使用注意:

    •   可变参数的底层原理正是3个数组
    •   传递分化个数的参数,会创立不相同长短的数组,接收那个参数可变参数的点子,调用的时候,能够不传递参数,传递任意个参数
    •   可变参数的平底原理正是三个数组
    •   传递不相同个数的参数,会创立不一样长度的数组,接收这一个参数可变参数的法子,调用的时候,能够不传递参数,传递任意个参数

  注意事项:

  注意事项:

  1. 三个艺术的参数,只好定义1个可变参数
  2. 如若艺术的参数有多个,那么可变参数必须写在列表的终极1位
  1. 多少个艺术的参数,只可以定义二个可变参数
  2. 比方方式的参数有七个,那么可变参数必须写在列表的最后1人

 

 

 

 

Collections集合工具类

Collections集合工具类

 

 

  Java.util.Collections 集合工具类

  Java.util.Collections 集合工具类

  Collections私有了无参构造方法,里面包车型地铁法门全是静态的,通过类名能够一直利用

  Collections私有了无参构造方法,里面的不二法门全是静态的,通过类名能够一直动用

  Collections 常用艺术:

  Collections 常用艺术:

    1. static void shuffle(List<?> list) 使用默许随机源对点名列表举办沟通,(打乱集合七月素的相继)

    1. static void shuffle(List<?> list) 使用私下认可随机源对点名列表举行置换,(打乱集合七月素的依次)

    2.static void sort(List<?> list ) 依照成分的自然顺序,对点名列表遵照升序进行排序(对聚集实行升序排序)

    2.static void sort(List<?> list ) 依据成分的当然顺序,对点名列表遵照升序实行排序(对聚集进行升序排序)