集合map
map集合存储的数据必须包含key和value
key和value在map中一一对应,一个key对应一个值。
key在map集合中不重复,相同key值的value值,后者会覆盖前者。
package com.tiedan;
import java.util.HashMap;
import java.util.Map;
public class testmap {
public static void main(String[] args) {
Map<String,String>map = new HashMap<>();
map.put("name","张三");
map.put("name","李四");
System.out.println(map);
}
}
运行结果:{name=李四}
map集合常用实现类HashMap
HashMap集合的特点
-
底层数据结构是哈希表
-
存储元素的顺序和遍历获取出来的顺序可能不一致
-
key不会重复.
当键值对被放到哈希表中时,哈希表会计算相应的索引值,该键值对就会被存放到相应的索引位置,如果一个索引位置有两个或以上的键值对,就会形成链表
HashMap常用方法
public class testhashmap {
public static void main(String[] args) {
HashMap<String,String>map = new HashMap<>();
//添加元素
String put =map.put("name","张三");
map.put("age","15");
String v = map.put("name", "李四");
System.out.println(v);
}
}
package com.tiedan;
import com.sun.prism.shader.Solid_TextureYV12_AlphaTest_Loader;
import java.util.HashMap;
public class testhashmap {
public static void main(String[] args) {
HashMap<String,String>map = new HashMap<>();
//添加元素
String put =map.put("name","张三");
map.put("age","15");
String v = map.put("name", "李四");
System.out.println(v);
//获得元素
String name = map.get("name");
String age = map.get("age");
//删除元素,remove方法也有返回值。
map.remove("age");
//判断key值是否存在,containsKey方法判断.
if (map.containsKey("age111")){
String age111 = map.get("age111");
System.out.println(age111.length());
//如果age111这个key值在Hash表中不存在,则会引起空指针报错
}else {
System.out.println("key值不存在");
}
//清空哈希表中所有的键值对用clear方法
//map.size统计map中键值对个数.
map.clear();
int size = map.size();
System.out.println(size);
}
}
Map集合的遍历
- 使用entryset遍历
//遍历map集合,entry类是Map的内部类,把map集合中的键值对封装成一个对象,
// 然后把这个对象通过map.entrySet()存在set集合中
Set<Map.Entry<String, String>> entries = map.entrySet();
// System.out.println(entries);
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey()+"==="+entry.getValue());
}
运行结果:
name=张三
age=15
-
使用keyset遍历
//keyset遍历,通过keyset方法把map里面的key全部放到一个set集合里面.然后通过key值去找value值 Set<String> strings = map.keySet(); System.out.println(strings); for (String string : strings) { System.out.println(string+"==="+map.get(string)); }
运行结果:
name=张三
age=15