首页 > 编程知识 正文

LinkedList类的特点是,linkedlist是有序的吗

时间:2023-05-03 22:41:31 阅读:55633 作者:1910

链接映射的特点1 .数据结构:哈希表(链地址法) ) ) ) ) )。

2 .默认数组大小: 16

3 .扩展机制:以原序列的两倍方式扩展

4 .默认放大系数: 0.75f

5 .扩展条件:扩展因子*序列长度

6 .线程是否安全:这个集合中线程不安全

7 .保存数据类型为密钥-值对(key-value )。

8.key和value都是空的

9.key不能重复。 value可以重复

10.key使用同一value更新

LinkHashMap的基本特征:1.key不能重复,value可以重复。

2 .链接hashmap插入有序或访问有序,assessOrder:true访问有序; 假插入规则

3 .底层数据结构是哈希表双向链表

4.key和value都是空的

LinkHashMap从HashMap继承后,HashMap的属性和方法将继承table属性和entry类型。

6 .链接的hashmap的entry类继承HashMap.Entry。 也就是说,它具有key、value、hash和next等属性,另外还添加了两个属性before和after

//头部节点专用传输入口,V header; //accessOrder是插入或控制访问顺序的默认值为false,即插入顺序为ture:的专用文件布尔访问顺序; class EntryK,V extends HashMap.EntryK,V { EntryK,V before,after; }7.链接的HashMap向HashMap添加双向链表。 用于记录节点的插入顺序。 分为访问顺序和插入顺序与acssessOrder方法的实现有关。)

7.1访问有序:每次访问哈希表时,访问节点都会删除指向双链表的链接,并将其添加到双链表的末尾。

7.2插入顺序:只根据插入(即put )方法的顺序创建双链表。

//父类的HashMap如果publicvput(kkey,V value ) if ) table==empty_table ) table为空,则以默认的16个大小填充哈希表inflatetable inthash=hash(key ); intI=indexfor(hash,table.length ); for(entryk,V e=table[i]; e!=null; e=e.next({objectk; if(e.hash==hash((k=e.key )|key.equals ) k ) ) { V oldValue=e.value; e .值=值; e .记录访问(this; 返回载荷值; } }模具计数; addentry(hash,key,value,I ); 返回空值; }在链接的hashmap中,在entry中使用voidrecordaccess(Hashmapk,V m ) LinkedHashmapk,VLM=(LinkedHashmapk,v ) m; if(lm.accessorder({lm.modcount; 移除(; addbefore(lm.header ); }//如果当前访问有序,请从双向链表中删除当前节点,将其插入head的before处理//linkedHashmap中,然后单击voidaddentry(inthash、K key、V value, int bucketIndex )实现supeer//removeeldestentryifinstructedentryk,V eldest=header.after; if(removeeldestentry(eldest ) ) removeentryforkey (eldest.key ); } }在} }HashMap中为addentryvoidaddentry(inthash、K key、V value、int bucketIndex ) if ) (size=threshold ) ) null!=table[bucketIndex] ) (resize(2*table.length ); hash=(空!=key? hash(key ) : 0; bucketindex=indexfor(hash,table.length ); }createentry(hash、key、value、bucketIndex ); }//linkedHashMap中为createentryvoidcreateentry (int hash、K key、V value、int bucketIndex ) { HashMap.EntryK,vold=table table[bucketIndex]=e; //处理双向链表,插入header的before位置e.addbefore(header ); size; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。