首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java集合:Map集合

某些映射实现可明确保证其顺序, TreeMap ;另一些映射实现则不保证顺序, HashMap 。 注: 将可变对象用作映射键时必须格外小心。...当对象是映射中某个键时,如果以影响 equals 比较方式更改了对象,则映射行为将是不确定。此项禁止一种特殊情况是不允许某个映射将自身作为一个键包含。...虽然允许某个映射将自身作为包含,但请格外小心:在这样映射上 equals 和 hashCode 方法定义将不再是明确。...int hashCode(); //返回此映射哈希码。 } 三、具体实现 接口java.util.Map,包括3个实现:HashMap、Hashtable、TreeMap。...向集合中存储自定义对象(entry类似于是结婚证) entrySet演示图解 HashMap : 内部结构是哈希表,不是同步。允许null作为键,null作为

1.9K20

Java集合面试题&知识点总结(中篇)

HashMap 通过键哈希进行快速查找,具有较高查找和插入速度。 HashSet 中元素实际上作为 HashMap 键存在,而 HashMap 则存储了一个固定对象 PRESENT。...TreeSet 中元素实际上作为 TreeMap 键存在,而 TreeMap 则存储了一个固定对象 PRESENT。...“写时复制” 基本思想是:当我们需要修改集合(添加、删除元素)时,不直接在当前集合上进行修改,而是先将当前集合进行复制,然后在新副本上进行修改,最后再将引用指向新副本。...写时复制策略:当对 CopyOnWriteArrayList 进行修改操作( add、set、remove 等)时,它并不直接在当前数组上进行修改,而是先将当前数组进行复制,然后在新数组上进行修改,...forEach 方法接受一个 Consumer 函数式接口实例作为参数,用于处理集合中每个元素。

21920
您找到你想要的搜索结果了吗?
是的
没有找到

深入理解Java中Map接口:实现原理剖析

在实际开发中,我们可能会使用到多种不同Map实现HashMap、TreeMap、LinkedHashMap等,但是对于Map接口底层实现原理,我们是否真正了解呢?...如果存在,则更新该键值对返回。否则,将新键值对添加到该链表末尾,返回 null。  ...如果要删除节点是链表头节点,直接将tablei指向下一个节点;否则,将前一个节点next指向当前节点下一个节点。  最后,将要删除节点进行清理操作,并返回它对应value。...如果找不到要删除节点,则返回null。  如下是部分源码截图:TreeMap  TreeMap是一种基于红黑树实现Map,它能够对键进行排序,因此适用于需要按照键值进行排序场景。...它接受一个键对象作为参数,返回其对应对象,并将其从 HashMap 中移除。  首先,该方法会获取数组 table 和其长度 n。

36812

Java集合:整体结构

集合作为容器可以存储任何类型数据,当然也可以结合泛型存储指定类型(不过泛型仅仅在编译期有效,运行时是会被擦除)。集合中存储仅仅是对象引用,并不存储对象本身。...集合容量可以在运行期间进行动态扩展,并且还提供很多很方便方法,求集合并集、交集等。 二、集合结构   Java中集合包含多种数据结构,链表、队列、哈希表等。...而加入Set之前需要先执行hashCode方法,如果返回在集合中已存在,则要继续执行equals方法,如果equals方法返回结果也为真,则证明该元素已经存在,会将新元素覆盖老元素,如果返回hashCode...这两者与TreeMap区别在于TreeMap是根据键值进行排序,当然其底层实现也有本质区别,HashMap底层是一个哈希表,而TreeMap底层数据结构是一棵树。...除了上述,集合还提供Collections和Arrays两个工具,此外,集合中排序跟Comparable和Comparator紧密相关。在之后文章中将对上述提在JDK中实现源码进行详细分析。

46950

Java集合:整体结构

集合作为容器可以存储任何类型数据,当然也可以结合泛型存储指定类型(不过泛型仅仅在编译期有效,运行时是会被擦除)。集合中存储仅仅是对象引用,并不存储对象本身。...集合容量可以在运行期间进行动态扩展,并且还提供很多很方便方法,求集合并集、交集等。 二、集合结构   Java中集合包含多种数据结构,链表、队列、哈希表等。...而加入Set之前需要先执行hashCode方法,如果返回在集合中已存在,则要继续执行equals方法,如果equals方法返回结果也为真,则证明该元素已经存在,会将新元素覆盖老元素,如果返回hashCode...这两者与TreeMap区别在于TreeMap是根据键值进行排序,当然其底层实现也有本质区别,HashMap底层是一个哈希表,而TreeMap底层数据结构是一棵树。...除了上述,集合还提供Collections和Arrays两个工具,此外,集合中排序跟Comparable和Comparator紧密相关。在之后文章中将对上述提在JDK中实现源码进行详细分析。

54160

Java Map集合详解「建议收藏」

Map中不能有重复键(Key),每个键(key)都有一个对应(value)。 一个键(key)和它对应构成map集合中一个元素。 Map中元素是两个对象,一个对象作为键,一个对象作为。...特点 Key和Value是1对1关系,:门牌号 :家 老公:老婆 双列集合 Map学习体系: ---| Map 接口 将键映射到对象。...常见方法 1、添加: 1、V put(K key, V value) (可以相同key,但是添加value会覆 盖前面的,返回是前一个,如果没有就返回null)...需要定义一个实现接口Comparator,重写compare方法,并将该接口子类实例对象作为参数传递给TreeMap集合构造方法。...,Map键不可重复,如果存入重复元素如何处理 Set元素重复元素不能存入add方法返回false Map重复健将覆盖旧键,将旧返回

68720

Java漫谈-容器

它们都有相同基本接口Map,但是行为特性各不相同,这表现在效率、键值对保存及呈现次序、对象保存周期、映射表如何在多线程程序中工作和判定“键”等价策略等方面。...TreeMap特点在于:所得到结果是经过排序TreeMap是唯一带有subMap()方法Map,它可以返回一个子树。...若要使用自己作为HashMap键,必须同时重载hashCode()和equals()。...而是通过键对象生成一个数字,将其作为数组下标,这个数字就是散列码,由定义在Objcet中、且可能由你覆盖hashCode()方法(在计算机科学术语中成为散列函数)生成。...如果能保证没有冲突(当值数量是固定,那就有可能),就有了一个完美的散列函数,但仅是特例。 完美的散列函数在SE5中EnumMap和EnumSet中得到了实现,因为enum定义了固定数量实例

1.5K10

Java集合详解(超详细)

Set接口主要实现;线程不安全;可以存null |----LinkedHashSet:作为HashSet子类;遍历其内部数据时,可以按照添加顺序遍历;对于频繁遍历操作,...JDK不提供此接口任何直接实现,而是提供更具体子接口(:Set和List)实现。...ode来进行比较 Boolean:true对应包装实例大于fase对应包装实例 String:按字符串中字符unicode进行比较 Date、Time:后边时间、日期比前面的时间、日期大...要实现定制排序,需要将实现Comparator接口实例作为形参传递给TreeSet构造器。 此时,仍然只能向Treeset中添加类型相同对象。...和 equals()方法 常用 String作为Map“键” key和value之间存在单向一对一关系,即通过指定key总能找到唯一、确定value Map接口常用实现:HashMap、TreeMap

77920

JavaSE(八)之Map总结

这时保存时候,需要将有对应关系数据一起保存。   在Java中将Collection下所有集合称为单列集合,它们每次只能保存单一元素数据。   ...但是如果当前key在map中不存在,那么相当于当前key是第一次保存到集合中,那么当前put方法返回null。     ...如果当前保存key在Map集合中已经存在,那么现在这个key对应value会覆盖key在Map中对应原来value。并返回被覆盖(原来)value。   2)删除方法 ?     ...2,.1、自定义对象作为HashMapkey   自定义对象作为HashMapkey,自定义对象需要复写ObjecthashCode和equals方法 /* * 演示HashMap集合...+entry.getValue()); } }   2)key为自定义对象 /* * 使用自定义对象作为TreeMapkey */ public class TreeMapDemo2

561100

Java集合 Map 集合 与 操作集合工具: Collections 详细说明

但是其中 value 是可以存储重复数据。而 value 则是被 Collection 接口集合存储。常用 String 作为 Map ”键“。...Map 接口常用实现:HashMap 作为Map主要实现,线程不安全,效率高,可以存储 null key 和 value。...作为古老实现,线程安全,效率低,不可以存储 nullProperties 主要用于配置文件读取。...void clear(); // 清空当前map中所有数据size() : 返回此集合中存储元素数据(键值对)数量。int size(); // 返回此集合中存储元素数据(键值对)数量。...集合对象时,将一个匿名实现Com 作为参数,传递给构造器。

83620

Java集合操作优化经验总结

JDK 不提供直接继承自 Collection ,JDK 提供都是继承自 Collection 子接口, List 和 Set。...Collection 接口提供主要方法: boolean add(Object o) 添加对象到集合; boolean remove(Object o) 删除指定对象; int size() 返回当前集合中元素数量...; Boolean addAll(int index,Collection c) 在列表中指定位置加入指定集合; Boolean clear() 删除列表中所有元素; Boolean clone() 返回该列表实例一个拷贝...get(int index) 返回列表中指定位置元素; Int indexOf(Object elem) 在列表中查找指定元素下标; Int size() 返回当前列表元素个数。...尽量返回接口而非实际类型,返回 List 而非 ArrayList,这样如果以后需要将 ArrayList 换成 LinkedList 时,客户端代码不用改变,这就是针对抽象进行编程思想。

1.3K170

集合操作优化经验总结

JDK 不提供直接继承自 Collection ,JDK 提供都是继承自 Collection 子接口, List 和 Set。...Collection 接口提供主要方法: boolean add(Object o) 添加对象到集合; boolean remove(Object o) 删除指定对象; int size() 返回当前集合中元素数量...get(int index) 返回列表中指定位置元素; Int indexOf(Object elem) 在列表中查找指定元素下标; Int size() 返回当前列表元素个数。...Hashtable Hashtable 继承 Map 接口,实现了一个基于 Key-Value 映射哈希表。任何非空(non-null)对象都可作为 Key 或者 Value。...尽量返回接口而非实际类型,返回 List 而非 ArrayList,这样如果以后需要将 ArrayList 换成 LinkedList 时,客户端代码不用改变,这就是针对抽象进行编程思想。

73420

Map集合总结

(8)Object put(Object key, Object value):添加一个键值对,如果当前Map中已经有一个与该key相等键值对,则新键值对将覆盖原来键值对。...Entry包含三个方法: (1)Object getKey():返回该Entry里包含key。 (2)Object getValue():返回该Entry里包含value。...SortedMap接口和TreeMap实现 Map接口和set接口一样,也派生出一个SortedMap子接口,TreeMap是SortedMap接口实现。...IdentityHashMap提供了与HashMap基本相似的方法,也允许使用null作为key和value。 EnumMap实现 EnumMap是一个与枚举一起使用Map实现。...EnumMap根据key自然顺序(枚举在枚举中定义顺序)来维护键值对次序, EnumMap不允许使用null作为key,但允许使用null作为value。

49720

如何决定使用 HashMap 还是 TreeMap

导读:TreeMapKey是要求实现java.lang.Comparable,所以迭代时候TreeMap默认是按照Key升序排序TreeMap实现是基于红黑树结构。...AbstractMap抽象:覆盖了equals()和hashCode()方法以确保两个相等映射返回相同哈希码。...添加到SortedMap实现元素必须实现Comparable接口,否则您必须给它构造函数提供一个Comparator接口实现。TreeMap是它唯一一个实现。...0 ; 如果此字符串小于字符串参数,则返回一个小于 0 ; 如果此字符串大于字符串参数,则返回一个大于 0 。...自定义比较器时,在返回时多添加了个负号,就将比较结果以相反形式返回,代码如下: ? 之后,通过MyComparator初始化一个比较器实例,将其作为参数传进TreeMap构造方法中: ?

1.1K40

Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap

,Map子类和Set子类在名字上也惊人相似:Set接口下有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet等实现和子接口,而Map接口下则有HashMap...Object clone() 返回TreeMap实例浅表副本。 Comparator firstEntry() 返回与此地图中最小键相关键值映射,或者null地图为空。 K firstKey() 返回此地图中当前第一个(最低)键。...Map.Entry lastEntry() 返回与此地图中最大键关联键值映射,或者null映射为空。 K lastKey() 返回此地图中当前最后一个(最高)键。...创建EnumMap时必须显示或隐式指定它对应枚举。 EnumMap不允许使用null作为key,但容许使用null做为value。

1.5K80

【JavaSE专栏54】Java集合TreeMap解析,基于红黑树键值对存储结构

---- 二、TreeMap使用 下面是使用 TreeMap 示例代码,请同学们复制到本地执行。...时间轴数据存储:TreeMap 结构适合存储时间轴数据,因为时间是有序。可以将时间作为键,事件或数据作为,便于按照时间顺序进行检索和分析。...数据统计和分析:由于 TreeMap元素是有序,可以根据键顺序进行数据统计和分析。例如,可以统计某段时间内数据变化趋势,找出数据最大和最小等。...---- 四、TreeMap面试题 TreeMap 是什么?它与 HashMap 有什么区别? 如何在 TreeMap 中按照键自然顺序进行排序?...如何在 TreeMap 中使用自定义比较器进行排序? TreeMap 时间复杂度是多少? 如何获取 TreeMap第一个键值对和最后一个键值对?

41040

Java集合详解

Java SDK不提供直接继承自Collection,Java SDK提供都是继承自Collection“子接口”List和Set。   ...改变操作允许您从映射中添加和除去键-对。键和都可以为 null。但是,您不能把Map 作为一个键或添加给自身。...HashMap TreeMap “集合框架”提供两种常规 Map 实现:HashMap 和TreeMap。和所有的具体实现一样,使用哪种实现取决于您特定需要。...Hashtable是原始集合之一(也称作遗留)。HashMap作为新集合框架一部分在Java21.2版本中加入。...它们之间有一下区别:   ● HashMap和Hashtable大致是等同,除了非同步和空(HashMap允许null作为key和value,而Hashtable不可以)。

90520

Java--集合之Collection与Map

,以用它遍历集合各元素 boolean remove(Object) *自变量在集合里,就删除那个元素一个实例。...使用自定义作为HashMap、Hashtablekey时,如果重写该类equals()方法和hashCode()方法,必须保证两个方法判断标准一致, 即两个key通过equals()方法返回true...TreeMap: 是SortedMap接口一个实现,在一个“红-黑”树基础上实现。每个键值对即作为红黑树一个结点。...根据key自然排序(即枚举在枚举定义顺序)来维护键值对顺序; EnumMap不允许使用null作为key,但允许使用null作为value。...: EnumMap性能最好,但只能使用同一枚举枚举作为key; LinkHashMap要比HashMap慢一些,因为它需要维护一个链表; IIdentityHashMap性能和HashMap差不多

89880
领券