提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
Map集合结构
Map接口的特点:
1.用于存储任意键值对(key-Value)
2.键:无序、无下标、不允许重复(唯一)
3.值:无序、无下标、允许重复
提示:以下是本篇文章正文内容,下面案例可供参考
一、Map父接口
特点:存储一堆数据(key-Value),无序,无下标,键不可重复,值可重复。
方法:
- V put(K key,V value) //将对象存入集合中,关联键值。key重复则覆盖原值。
- Object get(Object key) //根据键获取对应的值
- Set //返回所有的key
- Collection values() //返回包含所有值的Collection集合
- Set<Map.Entry<K,V>> //键值匹配的Set集合
1、使用步骤
代码如下(示例):
package com.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
*Map接口的使用
* 特点: 1存储键值对 2键不能重复,值可以重复 3.无序
*/
public class Demo01 {
public static void main(String[] args) {
//创建Map集合
Map<String, String> map = new HashMap<>();
//添加元素
map.put("cn","中国");
map.put("uk","英国");
map.put("usa","美国");
map.put("cn","zhongguo");
System.out.println("元素个数"+map.size());
System.out.println(map.toString());
//删除元素
// map.remove("usa");
// System.out.println(map.toString());
//遍历
//1.使用keySet();
// Set<String> keyset=map.keySet();
for (String key : map.keySet()){
System.out.println(key+"***"+map.get(key));
}
// 2.使用entrySet();
// Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String,String> entry :map.entrySet()){
System.out.println(entry.getKey()+"----"+entry.getValue());
}
}
}
二、HashMap实现类
代码如下(示例):
package com.Map;
import java.util.HashMap;
import java.util.Map;
/*
*HashMap集合的使用
* 存储结构:哈希表(数组+链表+红黑树)
* 使用key可hashcode和equals作为重复
*/
public class Demo02 {
public static void main(String[] args) {
//创建集合
HashMap<Student ,String> students=new HashMap<Student,String>();
//添加元素
Student s1=new Student("张三",150);
Student s2=new Student("王五",120);
Student s3=new Student("小田",110);
Student s4=new Student("小溪",150);
students.put(s1,"北京");
students.put(s2,"上海");
students.put(s3,"山西");
students.put(s4,"陕西");
// students.put(s4,"湖北");
students.put(new Student("张三",150),"北京");
System.out.println("元素个数: "+students.size());
System.out.println(students.toString());
//删除操作
students.remove(s1);
System.out.println("删除之后"+students.size());
System.out.println(students.toString());
//遍历
for (Student key : students.keySet()){
System.out.println(key.toString()+"***"+students.get(key));
}
for (Map.Entry<Student , String> entry :students.entrySet()){
System.out.println(entry.getKey()+"*---*"+entry.getValue());
}
//判断
System.out.println(students.containsKey(s2));
System.out.println(students.containsValue("美国"));
System.out.println(students.containsKey(new Student("王五",120)));
}
}
---
```java
package com.Map;
import com.HashSet.Person;
public class Student {
private String name;
private int stuNo;
public Student(){
}
public Student(String name, int stuNo) {
super();
this.name = name;
this.stuNo = stuNo;
}
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;
}
@Override
public String toString() {
return "Student [name=" + name + ",stuNo=" + stuNo + "]";
}
@Override
public int hashCode() {
final int prime=31;
int result = 1;
result = prime * result+((name == null)? 0 :name.hashCode());
result = prime * result +stuNo;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (obj instanceof Student) {
Student p = (Student) obj;
if (this.name.equals(p.getName()) && this.stuNo == p.getStuNo()) {
return true;
}
}
return false;
}
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了HashMap的使用,而Map提供了大量能使我们快速便捷地处理数据的函数和方法。