Map集合的概述和接口的使用
创始人
2024-02-23 17:03:47
0

目录

一、Map集合概述

 1.Map接口的特点

2.方法

二、Map接口的使用

三、Map集合的实现类

1.HashMap

2.Hashtable

3.Properties

4.TreeMap


一、Map集合概述

 1.Map接口的特点

(1)用于存储任意键值对

(2)键:无序、无下标、不允许重复(唯一)

(3)值:无序、无下标、允许重复

2.方法

V put(K key,V value);  //将对象存入到集合中,关联键值。key重复则覆盖原值。

Object get(Object key)//根据键值获取对应的值。

Set    //返回所有的key。

Collection values()    //返回包含所有值的Collection集合。

二、Map接口的使用

import java.util.HashMap;
import java.util.Map;/*** Map接口的使用* 特点:1.存储键值对   2.键不能重复,值可以重复    3.无序*/
public class Demo01 {public static void main(String[] args) {//创建Map集合Map map = new HashMap<>();//1.添加元素map.put("china","中国");map.put("uk","英国");map.put("usa","美国");System.out.println("元素个数:" + map.size());System.out.println(map.toString());System.out.println("----------------");//2.删除map.remove("usa");System.out.println("删除后的元素个数:"+map.size());System.out.println("----------------");//3.遍历//(1)使用keySet();for (String key : map.keySet()){System.out.println(key+"---"+map.get(key));}System.out.println("----------------");//(2)使用entrySet()方法for (Map.Entry entry : map.entrySet()){System.out.println(entry.getKey()+"-------"+entry.getValue());}System.out.println("----------------");//4.判断System.out.println(map.containsKey("cn"));System.out.println(map.containsValue("中国"));}
}

三、Map集合的实现类

1.HashMap

线程不安全,运行效率快,允许用null作为key或是value。

测试类:

import java.util.HashMap;
import java.util.Map;/*** HashMap集合的使用* 存储结构:哈希表(数组+链表+红黑树)* 使用key可hashcode和equals作为重复**/
public class Demo2 {public static void main(String[] args) {//创建集合HashMap students = new HashMap();//1.添加元素Student s1 = new Student("孙悟空",143546);Student s2 = new Student("猪八戒",5633421);Student s3 = new Student("哮天犬",23435);students.put(s1,"北京");students.put(s2,"上海");students.put(s3,"深圳");students.put(new Student("哮天犬",23435),"南京");System.out.println("元素个数:"+students.size());   //元素个数:3System.out.println(students.toString());System.out.println("--------------------");//2.删除元素students.remove(s1);System.out.println("删除之后的元素个数:"+students.size());System.out.println("--------------------");//3.遍历//(1)使用keySet();for (Student key : students.keySet()){System.out.println(key.toString()+"---"+students.get(key));}System.out.println("--------------------");//(2)使用entrySet()方法for (Map.Entry entry : students.entrySet()){System.out.println(entry.getKey()+"---"+students.entrySet());}System.out.println("--------------------");//4.判断System.out.println(students.containsKey(s1));System.out.println(students.containsValue("北京"));}
}

学生类:

import java.util.Objects;public class Student {private String name;private int stuNo;public Student(String name, int stuNo) {this.name = name;this.stuNo = stuNo;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getStuNo() {return stuNo;}public void setStuNo(int stuNo) {this.stuNo = stuNo;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Student)) return false;Student student = (Student) o;return stuNo == student.stuNo && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, stuNo);}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", stuNo=" + stuNo +'}';}
}

2.Hashtable

线程安全,运行效率慢,不允许null作为key或是value。

3.Properties

Hashtable的子类,要求key和value都是String,通常用于配置文件的读取。

4.TreeMap

实现了SortedNap接口(是Map的子接口),可以对key自动排序。

使用:

import java.util.Map;
import java.util.TreeMap;/*** TreeMap的使用* 存储结构:红黑树*/
public class Demo3 {public static void main(String[] args) {//新建集合TreeMap treeMap = new TreeMap();//1.添加元素Student s1 = new Student("孙悟空",143546);Student s2 = new Student("猪八戒",5633421);Student s3 = new Student("哮天犬",23435);treeMap.put(s1,"北京");treeMap.put(s2,"上海");treeMap.put(s3,"广东");System.out.println("元素个数:"+treeMap.size());System.out.println(treeMap.toString());System.out.println("-----------------");//2.删除treeMap.remove(s1);System.out.println(treeMap.size());System.out.println("-----------------");//3.遍历//(1)使用keySetfor (Student key : treeMap.keySet()){System.out.println(key+"--"+treeMap.get(key));}System.out.println("-----------------");for (Map.Entry entry : treeMap.entrySet()){System.out.println(entry.getKey()+"----"+entry.getValue());}System.out.println("-----------------");//4.判断System.out.println(treeMap.containsKey(new Student("孙悟空",143546)));}}

学生类:

import java.util.Objects;public class Student implements Comparable{private String name;private int stuNo;public Student(String name, int stuNo) {this.name = name;this.stuNo = stuNo;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getStuNo() {return stuNo;}public void setStuNo(int stuNo) {this.stuNo = stuNo;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Student)) return false;Student student = (Student) o;return stuNo == student.stuNo && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, stuNo);}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", stuNo=" + stuNo +'}';}@Overridepublic int compareTo(Student o) {int n2 = this.stuNo-o.getStuNo();   //只比较学号return n2;}
}


定制规则:

 

重在理解!

感谢ლ(°◕‵ƹ′◕ლ)!!!

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...