HashMap
基本知识
1、HashMap存储的是键值对
2、HashMap集合是无序的
3、HashMap存储的元素是不可重复的(键不可重复)
4、HashMap是一个线程不安全的集合
5、HashMap是通过HashCode来存放数据
6、HashMap的允许存入null键null值
创建集合
HashMap集合是以键值对的形式的集合,在创建时就必须规定键和值的泛型,并且键和值都是使用的引用类型。
HashMap<String,Integer> map = new HashMap<>();
添加集合元素
- 逐个添加
map.put("语文", 92);
map.put("数学", 95);
map.put("英语", 100);
map.put("生物", 85);
map.put("化学", 95);
map.put("物理", 85);
//允许存储null值
map.put("政治", null);
map.put(null, 86);
常用方法
//键值相同则替代value,并返回原来的Value
map.put("数学", 110);
//存入键相同的键值对相当于替换
map.replace("语文", 112);
map.replace("物理", 85, 98);//使用新值替换老值
//存储键和值都是null值的元素
map.put(null, null);
//删除
map.remove("生物");//直接通过键来删除映射关系
map.remove("化学", 95);//通过完整的键值对删除映射关系
遍历
- EntrySet方式遍历
System.out.println("————————entrySet方式遍历————————");
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
- KeySet方式遍历
System.out.println("————————KeySet方式遍历————————");
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key+"\t"+map.get(key));
}
测试所写代码
public class HashMapTest {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<>();
//添加元素
map.put("语文", 92);
map.put("数学", 95);
map.put("英语", 100);
map.put("生物", 85);
map.put("化学", 95);
map.put("物理", 85);
//允许存储null值
map.put("政治", null);
map.put(null, 86);
//遍历方法一:entrySet
System.out.println("————————entrySet方式遍历————————");
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
//键值相同则替代value,并返回原来的Value
map.put("数学", 110);
//存入键相同的键值对相当于替换
map.replace("语文", 112);
map.replace("物理", 85, 98);//使用新值替换老值
//存储键和值都是null值的元素
map.put(null, null);
//删除
map.remove("生物");//直接通过键来删除映射关系
map.remove("化学", 95);//通过完整的键值对删除映射关系
//遍历方法二:KeySet
System.out.println("————————KeySet方式遍历————————");
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key+"\t"+map.get(key));
}
}
}
提示
以上只是我自己的看法,如有相同纯属意外。如有错误,也请谅解,勿喷!如有收获或疑问,欢迎点赞评论!