Java中的HashMap

Java Map集合详解
本文深入解析Java中的Map集合,涵盖其基本概念、常用实现类如HashMap、LinkedHashMap及Properties的特性,详细阐述了HashMap的使用方法,包括添加、获取、删除元素等操作,并提供了遍历Map集合的多种方式。

Map概述

  • 1、概述
    Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。
  • 2、Map常用实现类:
    ①HashMap:允许使用 null 值和 null 键;此类不保证映射的顺序;在多线程操作下不安全
    ②LinkedHashMap:基于哈希表和链接列表的实现类;具有可预知的迭代顺序(双重链接表的有序性)
    ③Properties:Hashtable的一个子类;属性列表中每个键及其对应值都是一个字符串;在多线程操作下安全

HashMap常用方法

  • 1、向HashMap中添加元素(put),注意:key不允许重复,否则覆盖已有的key对相应的值
  • 2、获取key所对应的value(get)
//例1、2
import java.util.HashMap;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		System.out.println(map.get("小明"));
		map.put("小明",15);
		System.out.println(map.get("小明"));
	}
}
  • 3、获取HashMap集合容器中有多少对key-value(size)
//例3
import java.util.HashMap;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		System.out.println(map.size());
		map.put("小强",13);
		System.out.println(map.size());
	}
}
  • 4、清空集合(clear)
  • 5、判断集合是否为空(isEmpty)
//例4、5
import java.util.HashMap;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		System.out.println(map.isEmpty());
		map.clear();
		System.out.println(map.isEmpty());
	}
}
  • 6、删除HashMap元素,返回value(remove)
//例6
import java.util.HashMap;
import java.util.Set;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		System.out.println(map.get("小明"));
		System.out.println(map.remove("小明"));
		System.out.println(map.size());
	}
}
  • 7、value值组成的集合
//例7
import java.util.HashMap;
import java.util.Collection;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		Collection<Integer> con = map.values();
		for (int age : con) {
			System.out.println(age);
		}
	}
}
/*运行结果:
13
12*/

HashMap的遍历

  • 1、通过key值

  • ①加强循环

import java.util.HashMap;
import java.util.Set;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		Set<String> set = map.keySet();//通过keySet方法,将map中的key值存入到新建集合set中
		for (String key : set) {//加强循环,对set集合进行遍历
			System.out.println(key+" "+map.get(key));//输出key值并输出获取value值
		}
	}
}
/*运行结果:
小强 13
小明 12*/
  • ②iterator
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		Set<String> set = map.keySet();
		Iterator<String> iterator = set.iterator();//将set集合转存到iterator中
		while(iterator.hasNext()) {
			String key = iterator.next();
			System.out.println(key+" "+map.get(key));
		}
	}
}
/*运行结果:
小强 13
小明 12*/
  • 2、通过创建Entry对象

  • ①加强循环

import java.util.HashMap;
import java.util.Set;
import java.util.Map.Entry;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		Set<Entry<String, Integer>> set = map.entrySet();//将每一对键值对存入到一个Entry类的对象中,并把entry存入到set中
		for (Entry<String, Integer> entry : set) {//加强循环
			System.out.println(entry.getKey()+":"+entry.getValue());//通过entry调用entry类方法getKey、getValue获得key值和value值
		}
	}
}
/*运行结果
小强:13
小明:12*/
  • ②iterator
import java.util.HashMap;
import java.util.Set;
import java.util.Map.Entry;
import java.util.Iterator;
public class Test {
	public static void main(String[] args) {
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("小明",12);
		map.put("小强",13);
		Set<Entry<String, Integer>> set = map.entrySet();
		Iterator<Entry<String, Integer>> iterator = set.iterator();//将Set集合中的entry转存到iterator中
		while(iterator.hasNext()) {
			Entry<String, Integer> entry = iterator.next();//将下一个内存中的值赋给entry
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
	}
}
/*运行结果
小强:13
小明:12*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值