Java Map集合详解:HashMap与LinkedHashMap

版权申诉
0 下载量 76 浏览量 更新于2024-08-03 收藏 510KB PDF 举报
"Java基础知识-day04 【Map】的学习课件,主要讲解了Map集合的特点、使用方法以及HashMap和LinkedHashMap的区别与应用。" 在Java编程中,Map接口及其实现类是处理键值对数据的重要工具。Map集合的核心概念是映射,即每个键(Key)唯一对应一个值(Value)。这与Collection接口下的单列集合不同,单列集合中元素是独立存在的,而Map中的元素是成对出现的。Map接口不允许有重复的键,但值可以重复。 Map接口中,元素的组织形式是由键找到值,通过键值对(Key-Value Pair)来存储数据。Map接口定义了一些基本操作,例如: 1. `put(K key, V value)`:将给定的键值对插入Map中,如果键已存在,则更新对应的值。 2. `remove(Object key)`:移除指定键的键值对,并返回被移除的值。 3. `get(Object key)`:根据键获取对应的值,如果键不存在则返回null。 4. `size()`:返回Map中键值对的数量。 5. `isEmpty()`:判断Map是否为空。 6. `clear()`:清空Map中的所有键值对。 HashMap是Map接口的一个重要实现类,它基于哈希表进行数据存储,因此查找和插入的速度较快。但是,由于哈希表的无序性,HashMap不能保证元素的顺序。为了保证键的唯一性,当自定义类作为键使用时,需要重写`hashCode()`和`equals()`方法。 LinkedHashMap是HashMap的子类,它结合了哈希表和链表的特性。当插入元素时,会按照插入顺序或者访问顺序来保持元素的顺序。这使得LinkedHashMap可以用于需要保持插入顺序或者访问顺序的场景。同样,当自定义类作为键使用时,也需要重写`hashCode()`和`equals()`方法。 在实际开发中,Map集合广泛应用于各种场景,例如存储配置信息、缓存数据、建立对象之间的关联等。HashMap适用于对元素顺序没有特殊要求且注重性能的情况,而LinkedHashMap则适用于需要保持元素顺序的场景。 学习Map集合不仅包括了解其基本特性和方法,还需要掌握如何正确使用键值对,如何处理键的唯一性,以及在特定情况下选择合适的Map实现类。通过实践,如编写斗地主洗牌发牌案例,可以更深入地理解和运用这些知识。在实际编程中,Map的运用往往涉及到多线程安全问题、性能优化等方面,这些都是进一步深入学习的方向。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2023-07-18 09:20:08.549 ERROR 5944 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'service'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl' defined in file [D:\专高二代码\day2-zy\target\classes\com\bwie\service\impl\UserServiceImpl.class]: Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'login': Only no-arg methods may be annotated with @Scheduled at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1425) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springf

2023-07-20 上传