博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Map集合
阅读量:7039 次
发布时间:2019-06-28

本文共 5763 字,大约阅读时间需要 19 分钟。

hot3.png

目录

    Map集合
    Map接口中常用的方法
    Map方法的使用
    Map自定义类型对象的添加
    Map结合List的代码优化
    总结

Map集合

    Map集合没有继承Collection接口,它提供了key-values的映射机制。一个key只能映射一个values,并且key不能相同。

Map接口中常用的方法

方法 功能及描述
put(K key,V values) 向集合中添加指定的key与values的映射关系
containsKey(Object key) 如果此映射关系包含指定的key,则返回true
containsValues(Object values) 如果次映射将一个或多个key映射到指定值,则返回true
get(Object key) 如果存在指定key的对象则返回对应的值,否则返回null
keySet() 返回集合中所有key对象形成的Set集合
values() 返回集合中所有值对象形成的Collection集合

Map方法的使用

    示例代码如下:

package test;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class Test2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Map
map = new HashMap<>(); map.put("陈小春", "32");//向Map集合中添加对象实例 map.put("渣渣辉", "20"); map.put("苦甜乐", "19"); map.put("陈小春", "40"); //遍历输出所有的键以及对应的值 for (Entry
string : map.entrySet()) { System.out.println(string); } System.out.println("containsKey(Object key)="+map.containsKey("陈小春"));//存在指定key,返回true System.out.println("containsKey(Object key)="+map.containsKey("成龙"));//不存在指定key,返回false System.out.println("containsValues(Object values)="+map.containsValue("32"));//存在指定values,返回true System.out.println("containsValues(Object values)="+map.get("陈小春"));//不存在指定key,返回false Set
set1 = map.keySet();//构建Map集合中所有key的集合 Iterator
iterator = set1.iterator();//创建集合迭代器 //遍历输出 while(iterator.hasNext()) { System.out.println("key="+iterator.next()); } Collection
set2 = map.values();//构建Map集合中所有key对象 //遍历输出 for (String string : set2) { System.out.println(string); } }}

Map自定义类型对象的添加

    示例代码如下:

package com.vince;public class Student1 {    private String name;    private char sex;    private Integer age;    public String getName() {        return name;    }    public char getSex() {        return sex;    }    public Integer getAge() {        return age;    }    public Student1(String name, char sex, Integer age) {        super();        this.name = name;        this.sex = sex;        this.age = age;    }    @Override    public String toString() {        return "姓名:" + getName() + "\t性别:" + sex + "\t年龄:" + age;    }}
package test;import java.util.HashMap;import java.util.Map;import com.vince.Student1;public class Test3 {    public static void main(String[] args) {        // TODO 向Map集合中存放自定义类型        // key的存放特点与Set一致,不能重复存放        // 当出现相同的key时,对应的values会被覆盖        Map
set = new HashMap<>(); set.put("001", new Student1("程晓春", '男', 50)); set.put("002", new Student1("古天乐", '男', 50)); set.put("003", new Student1("渣渣辉", '男', 30)); set.put("001", new Student1("程晓春", '女', 26)); for (String key : set.keySet()) { System.out.println("" + key + "" + set.get(key)); } }}

Map结合List的代码优化

    以List为例代码如下:

package com.vince;public class Student {        private Integer studentNumber;        private String name;        private char sex;        private Integer age;        public Integer getStudentNumber() {            return studentNumber;        }        public String getName() {            return name;        }        public char getSex() {            return sex;        }        public Integer getAge() {            return age;        }        public Student(Integer studentNumber, String name, char sex, Integer age) {            super();            this.studentNumber = studentNumber;            this.name = name;            this.sex = sex;            this.age = age;        }        @Override        public String toString() {            return "学号:" + getStudentNumber() + "\t姓名:" + getName() + "\t性别:" + sex + "\t年龄:" + age;        }}
package test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.vince.Student;public class pratice3 {    public static void main(String[] args) {        // TODO Auto-generated method stub        // TODO 使用集合存放两个班级的学生,要求每个班级中有三个学生        // 能够单独获得每个班级的学生信息,同时能够直接获得所有学生信息        List
class1 = new ArrayList<>(); class1.add(new Student(11, "小胡", '男', 11)); class1.add(new Student(12, "小林", '女', 22)); class1.add(new Student(13, "小白", '男', 21)); List
class2 = new ArrayList<>(); class2.add(new Student(21, "小红", '女', 11)); class2.add(new Student(25, "小明", '男', 14)); class2.add(new Student(23, "小琴", '女', 18)); Map
> className = new HashMap<>(); className.put("一班", class1); className.put("二班", class2); //输出一班的学生 for (Student student : class1) { System.out.println(student); } System.out.println(); //输出添加后学生的所有信息 class1.add(new Student(32,"王五",'男',32)); for (String key : className.keySet()) { for (Student student : className.get(key)) { System.out.println(key+student); } } }}

总结

    Map接口常用的实现类有HashMap和TreeMap,由于HashMap实现向Map集合中添加和删除映射关系效率更高,所以一般使用HashMap较多。TreeMap中的映射关系存在一定的顺序,如果想使Map集合中的对象也存在一定的顺序,则考虑使用TreeMap实现Map集合。 

HashMap构造方法中有一个默认的初始容量(16)和默认的加载因子(0.75)的空的构造方法,也可以使用带参的HashMap构造方法设定初始容量值和加载因子。加载因子的范围在0~1之间,加载因子越大查询的效率越低,加载因子越小,查询效率就越高,对内存的要求就越高。 
向Map集合中添加对象实例是通过put(K key,V values)方法来实现的。对Map集合中的对象实例的遍历有两种方式: 
    方式一:通过keySet()方法来获得key的集合,再根据get(key)的方法来获得values的值。

Set
keys = map.KeySet();map.get(key);

    方式二:通过entrySet()获得所有的key和values的值。

Set
> etries = map.entrySet();getKey(),getVaues();

转载于:https://my.oschina.net/u/3875806/blog/1922503

你可能感兴趣的文章
Android之permission权限列表(AndroidManifest.xml)
查看>>
Redux入门学习
查看>>
我的友情链接
查看>>
利用AWS boto实现EC2 存储卷的自动快照
查看>>
微软私有云解决方案专家认证之路
查看>>
曾经的痛啊 关于 becomeFirstResponder
查看>>
Android Service
查看>>
解决iphone safari上的圆角问题
查看>>
zabbix源码安装
查看>>
phpcms笔记
查看>>
查看系统用户登录信息命令
查看>>
CMS之图片管理(2)
查看>>
php 魔术方法总结(持续更新)
查看>>
利用ADMT进行Exchange跨域迁移之一:配置域信任
查看>>
javascript获取系统当前时间
查看>>
【java解惑】java中那些反常识的小知识
查看>>
bash内部命令变量
查看>>
python3.4 之sqlite3,pymysql
查看>>
网络接口
查看>>
centos下Extmail的搭建
查看>>