详述Java中HashMap常用方法

目录

 

一、Java中的HashMap类

二、定义语法

三、HashMap类常用方法

(1)put(K key, V value)

(2)get(Object key)

(3)size()

(4)clear()

(5)isEmpty ()

(6)remove(Object key)

(7)values()

(8)keySet() 

(9)entrySet() 

(10)iterator 迭代器

a、与get()方法结合:

b、与entry对象结合:

 


一、Java中的HashMap类

HashMap是Map接口的一个实现类 。我在之前的博客Java中的HashSet的常用方法总结中查看底层代码时提到过HashMap类,本篇就详细讨论一下,Java中HashMap类的常用方法。

二、定义语法

package runtime;

import java.util.HashMap;//引包

public class Goat {    //代码示例1
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();//创建HashMap类对象
		
	}
}

观察创建语句可发现HashMap类中可以定义两个泛型,前面的决定HashMap中key元素的类,后面的决定HashMap中value元素的类。(而且,Java中,泛型不能是基本数据类型,但可以是基本数据类型的包装类,byte-Byte  short-Short  int-Integer  long-Long  char-Char )而在HashMap类中,key元素不能重复。

三、HashMap类常用方法

(1)put(K key, V value)

put(K key, V value) 将键(key)/值(value)映射存放到Map集合中

改写代码示例1

package runtime;

import java.util.HashMap;

public class Goat {    //代码示例2
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);//向HashMap中添加元素  

	}
}

利用put()方法去添加元素时,元素的key不能重复,如果重复,则一定覆盖原先的value值,该现象我会在get()方法中会验证。

 

(2)get(Object key)

get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

改写代码示例1:

package runtime;

import java.util.HashMap;

public class Goat {    //代码示例3
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Tom", 0);
		int score = map.get("Tom");// 获取key对应的value
		System.out.println(score);// key不允许重复,若重复,则覆盖已有key的value

	}
}

 观察运行结果:

可知,之前加入的value已被覆盖,前面的观点得证 

(3)size()

size()  返回Map集合中数据数量,准确说是返回key-value的组数。

package runtime;

import java.util.HashMap;

public class Goat {    //代码示例4
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		System.out.println(map.size());
		
	}
}

 

 

(4)clear()

clear() 清空Map集合

import java.util.HashMap;

public class Goat {    //代码示例5
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		map.clear();// 清空map中的key-value
		System.out.println(map.size());
		
	}
}

 输出元素个数为0,说明集合中元素已被清空。

(5)isEmpty ()

isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

import java.util.HashMap;

public class Goat {    //代码示例6
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		map.clear();// 清空map中的key-value
		System.out.println(map.isEmpty());
		
	}
}

运行结果: 

 

(6)remove(Object key)

remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

package runtime;

import java.util.HashMap;

public class Goat {    //代码示例7
	public static void main(String[] args) {
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		int score = map.remove("Tom");
		System.out.println(score);
		
	}
}

运行结果: 

 

(7)values()

values()  返回Map集合中所有value组成的以Collection数据类型格式数据。

一般用于遍历HashMap集合中value值:

package runtime;

import java.util.Collection;
import java.util.HashMap;

public class Goat {    //代码示例8
	public static void main(String[] args) {

		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		Collection<Integer> con = map.values();
		for (Integer score : con) {
			System.out.println(score);
		}

	}
}

运行结果: 

(8)keySet() 

keySet()  返回Map集合中所有key组成的Set集合

 

package runtime;

import java.util.HashMap;
import java.util.Set;

public class Goat {    //代码示例9
	public static void main(String[] args) {

		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		Set<String> set = map.keySet();//将key作为元素转存入一个set集合。
		for (String key : set) {
			System.out.println(key + " " + map.get(key));//遍历HashMap集合中的key和value
		}

	}
}

(9)entrySet() 

entrySet()  将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合

package runtime;

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class Goat {    //代码示例10
	public static void main(String[] args) {

		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		Set<Entry<String, Integer>> set = map.entrySet();//将每一组key-value变为一个entry对象存入set集合
		for (Entry<String, Integer> entry : set) {
			System.out.println(entry.getKey() + ":" + entry.getValue());//遍历key-value
		}

	}
}

 

 

(10)iterator 迭代器

在前两篇博客Java中的HashSet的常用方法总结ArrayList的常用方法中已经两次提到了迭代器,它普遍被用于集合中元素的遍历,而HashMap集合元素的遍历方式除了以上提过的两种方式,还有两种与iterator迭代器结合的遍历方式。

a、与get()方法结合:

package runtime;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Goat {
	public static void main(String[] args) {

		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		Set<String> set = map.keySet();
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = iterator.next();//将下一位置的"真key"赋给局部变量"假key"
			System.out.println(key + " " + map.get(key));
		}

	}
}

 运行结果:

b、与entry对象结合:

package runtime;

import java.util.HashMap;//引包
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class Goat {
	public static void main(String[] args) {

		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("Tom", 100);
		map.put("Jim", 90);
		map.put("Sam", 91);
		Set<Entry<String,Integer>> set = map.entrySet();
		Iterator<Entry<String, Integer>> iterator = set.iterator();
		while (iterator.hasNext()) {
			Entry<String, Integer> entry = iterator.next();//相当于把所有entry对象向前提一个
			System.out.println(entry.getKey() + ":" + entry.getValue());
		}
	}
}

运行结果: 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值