集合(二)Map操作数据、Map、HashMap

本文介绍了Java中的Map接口,包括其存储结构、键值对特性以及提供的关键方法。HashMap作为Map的重要实现类,基于哈希表,允许键和值为null但键不可重复。Map的添加、遍历、删除和修改数据的方法如put、get、remove也被详细讲解。

Map接口

1.Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value,key和value是object类型。
2.Map中的键值对以Entry类型的对象实例形式存在。
3.键(key值)不可重复,value值可以重复,每个键最多只能映射到一个值。
4.Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法。
5.Map支持泛型。

HashMap类

HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现,其中的Entry对象是无序排列的,Key值和value值都可以为null,但是HashMap只能有一个key值为null的映射(key值不可重复)。

Map添加数据

V put(K key, V value):将指定的值与此映射中的指定键关联。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。
key :与指定值关联的键,value : 与指定键关联的值。

 Map<String, Student> students=new HashMap<String, Student>();
 Scanner console = new Scanner(System.in)
 String ID = console.next();
 Student newStudent = new Student(ID, name);
 students.put(ID, newStudent);

遍历Map
Set<Map.Entry<K,V>> entrySet():返回此映射中包含的映射关系的 Set 视图。
Set keySet():返回此映射中包含的键的 Set 视图。
返回的set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、 Set.remove、 removeAll、 retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

1.通过keySet+get方法

// 通过keySet方法,返回Map中的所有“键”的Set集合
Set<String> keySet = students.keySet();
// 遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
for (String stuId : keySet) {
   Student st = students.get(stuId);
   if (st != null)
     System.out.println("学生:" + st.name);
 }  

2.通过entrySet方法来遍历Map

// 通过entrySet方法,返回Map中的所有键值对
Set<Entry<String, Student>> entrySet = students.entrySet();
for (Entry<String, Student> entry : entrySet) {
    System.out.println("取得键:" + entry.getKey());
    System.out.println("对应的值为:" + entry.getValue());
}

Map删除数据

V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除。返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。如果此映射允许 null 值,则返回 null 值并不一定表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。调用返回后,此映射将不再包含指定键的映射关系。key:从映射中移除其映射关系的键。

students.remove(ID);

Map修改数据

还是运用put方法,此时key是要修改的键,value是一个新传入的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值