关于java数据结构 在什么情况下使用什么样的数据结构的总结

什么情况下使用什么样的集合

1避免在链表中使用以整数索引来表示元素在集合中位置的所有方法,如果需要随驾访问集合,则使用arraylist或数组

2 散列映射表对键进行散列,树状映射表使用键的全局顺序进行排序,并组织成搜索树,

散列函数或比较函数智能作用于键,不能作用于值,

与散列集一样散列映射表的速度比较快,如果不需要按照顺序来访问键的话,就采用散列映射,

3,当你需要采用先进先出的原则来检索对象时,你就可以采用队列

4,如果你访问hashset的话,你可以保证其中的没个元素都会被访问到,但是不能确定访问顺序

5 Arraylist可以动态增长和缩减的索引序列

   LinkList可以在任何位置高效的插入和删除指定元素的有序序列

HashSet没有重复元素的无序集合

      TreeSet有序集//比散列集有所改进,他可以按照一定的顺序将元素插入到该集合,迭代时,按此顺序读出,

Enumset包含枚举元素的集合

LinkedHashSet可以记着插入元素顺序的集

PriorityQueue可以高效的移除最小元素的集合//以任意顺序读取,按排序顺序读取

HashMap 一种存储键值关联的数据结构

TreeMap键有序的map

EnumMap键属于枚举类型的map

Linkhashmap可以记着键值项被添加顺序的map

Weakhashmapmap中的值如果没有被调用,它将会被垃圾回收期回收

Identityhashmapmap中键用==而不是用equals

6java编程语言中,所有的linklist都是双向的,即都有前驱和后继

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的HashMap是一种散列表,它使用散列函数将键映射到数组中的桶中。散列函数是一种将键转换为数组索引的函数,这样就可以快速查找键对应的值。 HashMap中的数据存储在链表或红黑树(在Java 8中引入)中的节点对象中,每个节点对象包含一个键和一个值。链表或红黑树用于在键具有相同散列值时处理冲突。 总的来说,HashMap的数据结构是一个由链表或红黑树组成的数组,其中每个元素都是一个键值对。散列函数用于将键映射到数组中的桶中,以便快速查找值。 ### 回答2: Java的HashMap是一种基于哈希表数据结构实现的集合类。它是由数组和链表/红黑树组成的。一开始,HashMap会创建一个存储元素的数组,在使用过程中会根据需要调整大小。 哈希表是基于哈希函数的数据结构,它将键值对进行存储和检索。内部使用一个数组来存储元素,数组的每个位置称为桶。通过哈希函数,HashMap能够将键映射到对应的桶。 当进行插入操作时,首先通过哈希函数计算键的哈希值,然后将元素存储在对应的桶中。如果多个元素具有相同的哈希值,即哈希冲突,HashMap会使用链表或红黑树来解决冲突。链表存储冲突的元素,而红黑树则用于优化链表的性能,减少搜索时间。 在进行检索操作时,HashMap会先根据哈希函数计算键的哈希值,然后找到对应的桶。如果桶中只有一个元素,直接返回该元素;如果有多个元素,则通过比较键值找到目标元素。 HashMap的性能非常高效,插入和检索的时间复杂度均为O(1),即常数时间。然而,由于哈希冲突可能导致链表的长度增加,性能可能会略有下降。为了解决这个问题,Java 8引入了红黑树,将链表长度过长的桶转化为红黑树,提高检索效率。 总结来说,Java的HashMap是基于哈希表的数据结构,内部由数组和链表/红黑树组成。它通过哈希函数将键映射到对应的桶,并使用链表/红黑树解决哈希冲突。HashMap的插入和检索操作具有高效的性能。 ### 回答3: Java中的HashMap是以哈希表实现的数据结构。哈希表是一种基于数组的数据结构,其中的数据项是以键(key)和值(value)的形式存储的。 在HashMap内部,实际上是一个数组结构(Node数组),数组中的每个元素被称为桶(bucket),每个桶都可以存储一个或多个键值对。由于HashMap的大小是可调整的,因此数组的长度是可以根据需要进行动态改变的。 当我们向HashMap中添加一个键值对时,首先会计算键的哈希码(通过hashCode()方法),然后根据哈希码找到相应的桶。如果该桶为空,则将键值对存储在该桶中;如果该桶中已经有元素(可能存在冲突),则会采用链表或红黑树等数据结构来处理冲突的情况。具体来说,如果链表的长度小于8,则会以链表的形式存储冲突的元素;如果链表的长度达到8,则会将链表转换为红黑树,以提高元素查找的效率。 在HashMap中,通过键的哈希码来确定桶的位置,从而实现快速的插入、查找和删除操作。通过哈希表的索引,我们可以在常数时间复杂度下进行这些操作,使得HashMap成为了高效的数据结构。 需要注意的是,由于哈希表是基于数组的数据结构,因此它不是有序的。如果需要有序存储键值对,可以考虑使用TreeMap等其他的数据结构

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值