HashMap的简单使用

博客涉及main和Student相关内容,标签包含HashMap,推测与HashMap在程序中的应用有关,但内容简略,未提供更多关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main: 

package fanxing;

import java.util.HashMap;

public class MyDemo {
	public static void main(String[] args) {
		
		//定义泛型hashmap
		//key:Integer  value:Student
		HashMap<Integer,Student> map=new HashMap<>();

		map.put(2017,new Student(2017,"Jiu Bo","15137742640"));
		map.put(2016,new Student(2016,"Jiu Sen","15137742640"));
		map.put(2015,new Student(2015,"Ying Ying","15137742640"));
		map.put(2019,new Student(2019,"Chang Shan","15137742640"));
		
		Student s=map.get(2017);
		System.out.println("exit");
		
	}

}

Student:

package fanxing;

public class Student {
	
	public int sno;
	public String name;
	public String cellPhone;
	
	public Student(int sno,String name,String cellPhone)
	{
		this.sno=sno;
		this.name=name;
		this.cellPhone=cellPhone;
	}

	@Override
	public String toString() {
		return "Student [sno=" + sno + ", name=" + name + ", cellPhone=" + cellPhone + "]";
	}
}

 

### HashMap使用场景及适用情况 HashMap 是一种基于哈希表实现的数据结构,广泛应用于需要高效键值对存储和检索的场景。以下是其主要使用场景及适用情况: #### 1. 高效的键值对存储与检索 HashMap 提供了常数时间复杂度 O(1) 的插入、删除和查找操作(在理想情况下),因此非常适合需要快速访问数据的应用场景[^4]。 ```java // 示例:使用 HashMap 存储用户信息 Map<String, String> userMap = new HashMap<>(); userMap.put("userId1", "Alice"); userMap.put("userId2", "Bob"); String userName = userMap.get("userId1"); // 快速获取值 ``` #### 2. 允许键和值为 null HashMap 支持键和值为 `null` 的情况,这在某些特殊场景下非常有用,例如处理可能为空的数据源时[^4]。 ```java // 示例:允许键或值为 null Map<String, String> nullableMap = new HashMap<>(); nullableMap.put(null, "Value for null key"); nullableMap.put("key", null); ``` #### 3. 非线程安全的单线程环境 由于 HashMap 不是线程安全的,因此它适合在单线程环境下使用,或者在多线程环境中通过外部同步机制进行保护[^3]。 ```java // 示例:在单线程中使用 HashMap Map<Integer, String> singleThreadMap = new HashMap<>(); singleThreadMap.put(1, "Single Thread"); ``` #### 4. 调优初始容量和负载因子 为了优化性能,可以调整 HashMap 的初始容量和负载因子。这对于预计存储大量数据的场景尤为重要,能够减少哈希冲突并提高效率[^2]。 ```java // 示例:调优初始容量和负载因子 Map<String, String> optimizedMap = new HashMap<>(16, 0.75f); ``` #### 5. 缓存系统中的本地缓存 在不需要线程安全的简单缓存场景中,HashMap 可以用作本地缓存来存储临时数据[^1]。 ```java // 示例:作为本地缓存 Map<String, Object> cache = new HashMap<>(); cache.put("key1", "value1"); Object cachedValue = cache.get("key1"); ``` #### 6. 数据预处理与统计 HashMap 常用于数据预处理和统计任务,例如计算频率、分组数据等[^4]。 ```java // 示例:统计单词出现次数 String[] words = {"apple", "banana", "apple", "orange"}; Map<String, Integer> wordCount = new HashMap<>(); for (String word : words) { wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); } ``` #### 7. 不需要保持顺序的场景 如果应用程序不需要维护键值对的插入顺序,HashMap 是一个合适的选择。相比之下,如果需要保持顺序,则应考虑使用 LinkedHashMap[^4]。 ```java // 示例:无序存储 Map<String, Integer> unorderedMap = new HashMap<>(); unorderedMap.put("A", 1); unorderedMap.put("B", 2); ``` ### 注意事项 - 在多线程环境中直接使用 HashMap 可能会导致数据不一致问题。此时可以选择使用 `ConcurrentHashMap` 或通过外部同步机制保护 HashMap 的访问[^3]。 - 如果需要排序功能,应选择 TreeMap 而非 HashMap,因为后者不保证任何顺序[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值