java学习笔记—集合之Map集合

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已经存在的话,就会新值替换旧值,再次来到旧值
    1. 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类的连锁措施

 

  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方法:

    可以把文件中贮存的键值对,读取到集结中利用

  1. void load(Reader reader)  
  2. void load(InputStream inStream)  
  • * 参数:
  • Reader reader:字符输入流,可以运用FileReader
  • InputStream inStream:字节输入流,可以动用FileInputStream
  • * 操作步骤:
  • 1.创办Properties集合对象
  • 2.开立字符输入流File里德r对象,构造方法中绑定要读取的数据源
  • 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 之后出现的新特征

  作用:

    定义方法时,方法参数的品类确定,不过个数不确定,可以使用可变参数

 

  格式:

    修饰符  再次来到值类型 
方法名(数据类型…变量名){

    }

  使用注意:

    •   可变参数的最底层原理就是一个数组
    •   传递分歧个数的参数,会创建不一样尺寸的数组,接收这个参数可变参数的格局,调用的时候,可以不传递参数,传递任意个参数

  注意事项:

  1. 一个艺术的参数,只可以定义一个可变参数
  2. 尽管格局的参数有多个,那么可变参数必须写在列表的最终一位

 

 

Collections集合工具类

 

  Java.util.Collections 集合工具类

  Collections私有了无参构造方法,里面的主意全是静态的,通过类名可以直接行使

  Collections 常用艺术:

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

    2.static void sort(List<?> list ) 依据元素的当然顺序,对点名列表根据升序举行排序(对聚集进行升序排序)