Map(映射)接口

简介

该集合存储键值对,一对一对的往里存,并且键是唯一的。要保证map集合中键的唯一性。
从Map集合中访问元素时,只要指定了Key,就能找到对应的Value。
关键字是以后用于检索值的对象。

常见操作

1.添加

put(key,value):  当存储的键相同时,新的值会替换老的值,并将老值返回。如果键没有重复,返回null。

void putAll(Map);

2.删除

void clear():             清空

value remove(key) :删除指定键

3.判断

boolean isEmpty():

boolean containsKey(key):       是否包含key

boolean containsValue(value) :是否包含value

4.取出

int size():                  返回长度

value get(key) :        通过指定键获取对应的值。如果返回null,可以判断该键不存在。

当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。

Collection values():  获取map集合中的所有的值。

获取map中的所有元素

原理:map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。

之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法

把map集合转成set的方法:

Set<k> keySet();                 //将map中所有的键存到Set集合。

Set<k,value> entrySet();
//取的是键和值的映射关系。

Entry就是Map接口中的内部接口;

为什么要定义在map内部呢?

entry是访问键值关系的入口,是map的入口,访问的是map中的键值对。

方式一:keySet()方法。

可以将map集合中的键都取出存放到set集合中。对set集合进行迭代。迭代完成,再通过get方法对获取到的键进行值的获取

Set keySet = map.keySet(); 
    Iterator it = keySet.iterator(); 
    while(it.hasNext()) {
        Object key = it.next(); 
        Object value = map.get(key);
        System.out.println(key+":"+value);
    }

方式二:entrySet()方法。

先获取集合中的所有的映射关系,然后从映射关系中取出键和值

在Map中,还提供了一个values()方法,通过这个方法可以直接获取Map中存储所有值的Collection集合

Set<map.entry<String,String>> entrySet = map.entrySet(); 
    Iterator<map.entry<String,String>> it = entrySet.iterator();
    while(it.hasNext()) { 
        Map.Entry me = (Map.Entry)it.next(); 
        System.out.println(me.getKey()+":"+me.getValue()); 
    }

hashTable散列表

Map接口中还有一个实现类Hashtable,它在存取元素时速度很慢,目前基本上被HashMap类所取代。

底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的

HashMap集合

是Map接口的一个实现类,它用于存储键值映射关系,但必须保证不出现重复的键

底层是哈希表数据结构,允许使用null值和null键,是不同步的,效率高。键的类必须重写hashCode和equals方法

HashMap类使用散列表实现Map接口

HashMap集合迭代出来元素的顺序和存入的顺序是不一致的

HashMap实现Map并扩展AbstractMap

在向HashMap中添加元素时,不但要将元素添加,还要为每个元素设置一个Hash码。Hash码不只可以为数字,同样它也可以为字符串

LinkedHashMap类

是HashMap的子类,和LinkedList一样也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致。

构造方法

HashMap()方法                                              构造一个默认的散列映射

HashMap(Map m)方法                                   用类m中的元素初始化散列映射

HashMap(int Capacity)方法                           将散列集合的容量初始化为capacity

HashMap(int Capacity, float fillRadio)方法     用参数同时初始化散列映射的容量和填充比

主要方法

public void clear()                                        删除映射中所有映射关系

public boolean containsKey(Object key)     判断HashMap中是否包指定的键的映射关系,如果包含则返回true

public boolean containsValue(Object value)     判断HashMap中是否包指定的键值的映射关系

public V get(Object key)                 返回参数key键在该映射中所映射的值

public boolean isEmpty()                判断HashMap中是否包含键-值映射关系,如果不包含则返回true

public V put(K key, V value)
           在映射中放入指定值与指定键

public void putAll(Map m)               将指定映射的所有映射关系复制到此映射中

public int size()                               返回映射中键-值映射关系的数目

public V remove(Object key)          删除映射中存在该键的映射关系

TreeMap集合

TreeMap集合是用来存储键值映射关系的,其中不允许出现重复的键

底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序。键必须是Comparable接口的子类型

在TreeMap中是通过二叉树的原理来保证键的唯一性,这个TreeSet集合存储的原理一样,因此TreeMap中所有的键是按照某种顺序排列的。

TreeMap类通过使用树实现Map接口。TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索。不像散列映射,树映射保证它的元素按照关键字升序排序。

TreeMap实现SortedMap并且扩展AbstractMap。本身并没有定义其他方法。

构造方法

TreeMap()方法                         构造一个空树的映射

TreeMap(Map m)方法              用类m中的元素初始化树映射,使用关键字按自然排序

TreeMap(Comparator comp)    构造一个空的基于树的映射通过使用Comparator来排序

TreeMap(SortedMap sm)方法  用从sm的输入来初始化一个树映射

方法

clear()                                     从此TreeMap中删除所有映射关系

clone()
                                   返回TreeMap实例的浅表复制

comparator()                           返回用于对此映射进行排序的比较器,如果此映射使用它的键的自然顺序,则返回null

containsKey(Objectkey)         如果此映射包含对于指定的键的映射关系,则返回true

containsValue(Objectvalue)
   如果此映射把一个或多个键映射到指定值,则返回true

entrySet()                               返回此映射所包含的映射关系的set视图

firstKey()                                返回有序映射中当前第一个键

get(Objectkey)                       返回此映射中映射到指定键的值

headMap(KtoKey)                 返回此映射的部分视图,其键严格小于toKey

keySet()                                返回此映射中所包含的键的Set视图

lastKey()                               返回有序映射中当前最后一个键

Properties(属性)集合

是hashtable的子类,具备map集合的特点,里面存储的键值对都是字符串。文件流和键值对相结合 就用此集合

是集合中和IO技术相结合的集合容器

该对象的特点:可以用于键值对形式的配置文件,可以操作键盘的数据。

//设置和获取元素。
    Properties prop =new Properties();
    prop.setProperty("张三","30");//添加,修改
    sop(prop);
    prop.getProperty("键");
    循环获取
   Set<String> names=prop.stringPropertyNames();
   for(String s : names) {
        prop.getProperty(s);
    }

Properties存取配置文件,将文本a.txt中的数据存到集合中进行操作。

步骤:1.用一个六和info.txt关联
           2.读取一行数据,用该行数据用"="尽情切割

3.封号左边作为建,右边作为值,存储到Properties集合中即可

BufferedReader bufr=new BufferedReader(new FileReader("a.txt"));
    String line=null;
    Properties prop =new Propertites();
    while((line=bufr.readLine())!=null) {
    String[] arr =line.split("=");
    prop.setProperty(arr[0],arr[1]);
}
简便方法
    Properties prop =new Propertites();
    FileInputStream fis=new FileInputStream("a.txt");
    //将流中的数据加载进集合
    prop.load(fis);
    prop.list(System.out);

练习,用于记录应用程序运行次数,如果使用次数已经到,就给出注册提示。

Properties prop=new Properties();
    File file=new File ("count.ini");
    if(!file.exists()) {
        file.createNewFile(); 
        FileInputStream fis=new FileInputStream(file);
        prop.load(fis); 
        int count=0;
        String value=prop.getProperty("time");
        if(value!=null) {
            count=Integer.parseInt(value);
            if(count>=5) {
                System.out.println("您使用的次数已到");
                return;
            }
        }
        count++;
        prop.setProperty("time", count+"");
        FileOutputStream fos=new FileOutputStream(file);
        prop.store(fos, "");
        fos.close();
        fis.close();
    }

Java精选笔记_集合【Map(映射)接口】的更多相关文章

  1. Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)

    集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...

  2. Java精选笔记_集合【List(列表)接口】

    List(列表)接口 简介 List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合. 元素是有序的,即元素的存入顺序和取出顺序一致, ...

  3. Java精选笔记_集合【Set(集合)接口】

    Set(集合)接口 简介 同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了. ...

  4. Java精选笔记_面向对象(包、访问控制、内存机制、垃圾回收机制)

    包 包的定义与使用 专门用来存放类的,通常功能相同的类存放在相同的包中. 包的声明只能位于Java源文件的第一行 Java语言中的常用包 java.lang:包含Java语言的核心类,如String. ...

  5. Java精选笔记_文件上传与下载

    文件上传与下载 如何实现文件上传 在Web应用中,由于大多数文件的上传都是通过表单的形式提交给服务器的,因此,要想在程序中实现文件上传的功能,首先得创建一个用于提交上传文件的表单页面. 为了使Serv ...

  6. Java精选笔记_会话技术

    会话及其会话技术 会话概述 指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程. 会话:从浏览器开启到浏览器关闭.会话技术:用来保存在会话期间 浏览器和服务器所产生的数据. 在 ...

  7. Java精选笔记_面向对象(慨念、类和对象)

    面向对象概念 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 相对于面向过程而言.是一种思想,强调的是功能的对象. 面向对象的本质:以类的方式组织代码, ...

  8. Java精选笔记_国际化

    国际化 什么是国际化 指软件在开发时就应该具备支持多种语言和地区的功能,当应对不同国家和地区的用户访问,针对不同国家和地区的用户,提供相应的.符合来访者阅读习惯的页面和数据. 由于国际化interna ...

  9. Java精选笔记_自定义标签

    自定义标签 自定义标签入门 什么是自定义标签 自定义标签可以有效地将HTML代码与Java代码分离,从而使不懂Java编程的HTML设计人员也可以编写出功能强大的JSP页面 JSP规范中定义了多个用于 ...

随机推荐

  1. js实现点击按钮实现上一张下一张相册滚动效果

    /****判断图片是否构成滚动效果*/$(function(){    if($("#bar").find('img').size()*71<=$("#bar&qu ...

  2. 关于Java开发过程中质量提升-1代码格式配置

    在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本.编码规范的根本目的就是要让不仅代码可以一目了然,也可以很容易的理解 ...

  3. 【Unity笔记】将角色的碰撞体朝向鼠标点击方向——角色朝向鼠标

    int floorMask; // 自动寻路层 void Awake() { floorMask = LayerMask.NameToLayer("Floor"); } void ...

  4. 【火狐FireFox】同步失败后,书签被覆盖,如何恢复书签

    问题场景: 使用公司的电脑,下载安装火狐,登录个人帐号后,火狐会自动开始同步书签.但有时候会同步失败,比如登录之前选的是[本地服务],而最新的书签都是在[全球服务]理,那么很有可能同步到的是N久之前的 ...

  5. Windows获取线程起始地址

    typedef enum _THREADINFOCLASS { ThreadBasicInformation, ThreadTimes, ThreadPriority, ThreadBasePrior ...

  6. MySQL数据类型和运算符

    mysql支持多种数据类型,主要有下面三种: 数值数据类型 日期/时间类型 字符串类型 整数类型 不同数据类型有不同的取值范围,可存储的值的范围越大,则所需的存储空间也越大. 整数类型主要有: tin ...

  7. springMVC demo搭建

    1.使用idea新建一个基于maven的web项目,参考 http://www.cnblogs.com/winkey4986/p/5279820.html 2.采取了比较偷懒的配置方法,只配置了一个D ...

  8. linux_UAPI_转

    转自:Linux Kernel UAPI 问题描述 从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件.如果是第一次碰到,可 ...

  9. linux异步通知

    简述 linux下异步方式有两种:异步通知和异步IO(AIO),aio请参考:linux异步IO--aio 异步通知的含义是:一旦设备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态,准确称 ...

  10. 一、think in java 第一章

    一.面向对象程序设计方式: 1.万物皆为对象. 将对象视为奇特的变量,它可以存储数据,也可以要求它在自身上执行操作. 2.程序是对象的集合,它们通过发送消息来告知彼此所要做的. 要请求一个对象,就必须 ...