继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

java理论(自己总结)

慕侠6079527
关注TA
已关注
手记 3
粉丝 0
获赞 1

                                                         list调集(答应重复,答应null)

        list的完成类有arrayList、linkedList、vector。

        arrayList的底层是运用一个动态的数组来存储数据的,因为运用的数组,所以在随机访问数据的功能上比较出色,只需求提供数据的索引便能够准确的找到数据值。可是若进行刺进删去的操作其功能就不太好了,因为不管是刺进仍是删去,都需求将数组中的数据全体进行向前移动或者向后移动,从而造成时刻上的损耗。

        linkedList则是运用链表来进行存储数据,运用链表在进行刺进删去时只需求改动指针的方位就好了,可是若进行具体的查找则需求从链表的开头进行搜素查询,从而造成了时刻上的损耗。

        一般引荐运用arrayList,可是如果需求完成频繁的增删数据则运用linkedList,api就不再介绍,具体能够检查详细的javaapi来学习。

            别的这两个都是线程不安全的(便是在多线程访问的条件下,由于数据的不可见,导致数据的脏读等状况的发生),所以如需求确保多线程的安全,能够运用Collections中的synchornizedxxx()方法来确保。

               调集中比较元素是否相等需求运用equals方法来进行比较,因而调集中的元素需求完成equals方法。

                arrayList完成原理:内部运用数组来封装数据,可是数组能够完成动态的扩容。

                                                                        set调集(不答应重复,答应为null)

                完成类有HashSet,LinkedHashSet,SortSet(接口),treeSet。(都是线程不安全的需求运用collections来确保线程的安全在多线程访问的状况下)

                HashSet,运用hashCode值来核算元素的方位。所以HashSet在查找,增加,删去上有很好的功能,直接依据目标的hashCode值便能够敏捷的定位数据。

                LinkedHashSet与HashSet相同只是运用了链表来保护数据的次序,因而功能略低于HashSet。

                treeSet完成了SortSet接口因而数据的存储上具有一定的次序,并运用红黑树的数据结构来保存数据,功能低于hashset。

                调集中的目标需求完成equals方法和hashCode方法,一般经过equals若是true,则两者的hashCode值也需求坚持相等。

                hashCode的完成方式一般运用Object的hashCode方法而且与上(^)一个随机的数,防止hashCode值重复。    

                引荐运用hashSet,其他的依据项目的状况来决定。

               hashSet完成原理:内部运用hashMap来寄存数据,运用hashMap.ketSet()实际上便是获取了一个set调集

                                                    map调集(key不答应重复,答应为null,value能够重负,能够为null)

                完成类hashMap、LinkedHashMap、SortMap(接口)、treeMap、hashTable;

                map与上述的set在细想上是相同的,在这儿不在赘述,别的将map中的key抽取出来便是一个set,而把value值抽取出来便是一个list,而且set是在map的基础上封装出来的。所以两者的思想是相同的。

                别的vector和hashTable已经过时,不引荐运用,功能也不太好。可是他们都是线程安全的。

                hashMap的完成原理:

                     hashMap运用了内部类node来表示hashMap中的键值对,node模型完成了Map.entry接口,

                    模型中界说了 int hash(key的hash值) k key (键值)v value(值)node next(hash抵触时用来处理hash抵触的指针域)。经过这些特点构成了散列表的一个节点。

                    hashMap中的散列表实际上便是 node[],是一个node类型的数组,数组中并不是线性存储元素,而是用当前数组的长度^hash(key)

             仅在这儿进行理论的叙说,以及底层的完成原理,以供日后复习运用。有不正当的地方欢迎大家指正。http://qqk68.comhttp://cs-zhongda.com

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP