当前位置: 首页 > news >正文

新手如何建立自己网站模板创作师

新手如何建立自己网站,模板创作师,无锡装修网站,关键词优化推广一、ArrayList 1、概述 ArrayList是实现了List接口的动态数组#xff0c;所谓动态数组就是他的大小是可变的。实现了所有可选列表操作#xff0c;并允许包括Null在内的所有元素。除了实现 List 接口外#xff0c;此类还提供一些方法来操作内部用来存储列表的数组的大小。 …一、ArrayList 1、概述 ArrayList是实现了List接口的动态数组所谓动态数组就是他的大小是可变的。实现了所有可选列表操作并允许包括Null在内的所有元素。除了实现 List 接口外此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量该容量是指用来存储列表元素的数组的大小。默认初始容量是10。默认初始容量为10。随着ArrayList中元素的增加它的容量也会不断的自动增长。在每次添加元素时ArrayList都会检查是否需要进行扩容操作扩容操作带来数据向新数组的重新拷贝所以如果我们知道具体业务数据量在构造ArrayList时可以给ArrayList 指定一个初始容量这样就会减少扩容时的拷贝问题。当然在添加大量元素前应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量这可以减少递增式再分配的数量。 ArrayList基本参数 grow() 扩容方法 扩容规则 new ArrayList()的初始容量是0new ArrayList(int initialCapacity),会使用指定容量的数组new ArrayList(Collection c),则会使用这个集合c的大小作为容量add(Object o)一个一个添加元素 当第一次add时会首次扩容到10然后把元素加到传递为10的数值中当元素个数大于10时会进行继续扩容后面每一次扩容后的容量都会是原来数组的1.5倍使用的计算方式是原来的长度右移一位得到原来的一半再加上原来的长度 ( 10 1 10 ) 15 (101 10)15 (10110)15前10次扩容[0101522334973109163224] addAll(Collection c)添加集合元素 当使用addAll添加集合元素会对下次扩容的容量和实际的元素个数之间选一个较大的数作为扩容后的容量 迭代器IteratorFailFast VS failSafe FailFast 非哦发斯当进行遍历时不允许其他线程对集合来进行修改会直接抛出异常FailSafe非哦谁斯当进行遍历时运行运行其他线程对集合进行修改只不过会牺牲部分一致性 ArrayList使用的就是FailFast 策略执行遍历的 ArrayList再执行迭代时迭代器对象会先记录集合的修改次数然后去执行迭代方法next()然后再执行next()迭代方法时会先对比较迭代前的集合的修改次数和现在的修改次数是否相同如果相同则继续执行迭代当不相同时表示集合在迭代时被修改过则会抛出异常 CopyOnWriteArrayList 科批安外使用的则是FailSafe策略执行遍历再遍历时允许其他线程进行修改 CopyOnWriteArrayList 再执行迭代时使用的是读写分离的方式在执行add方法添加元素时不是直接添加在原来的数组里而是在把原来的数组复制了一个新的数组且长度在原来的基础上1添加的这个元素就放在了复制的数值扩容的那一个位置中所以压根不会影响到迭代器遍历只不过是牺牲了一致性迭代时读取不到这个新添加的元素而已。 ArrayList和LinkedList的区别 ArrayList 基于数组需要连续内存随机访问快指根据下标访问因为ArrayList的数据结构是数组在内存中存储是连续的随机访问时就可以根据下标通过简单的运算得到想要寻找的元素。ArrayList也通过继承了RandomAccess接口作为标识让jdk在执行时会采用下标的方式去寻找。而LinkedList则没继承尾部插入、删除性能可以其他部分插入、删除都会移动数据因此性能会比较低可以利用cpu缓存局部性原理因为ArrayList基于数组所以在内存中存储是连续的就可以很好的利用cpu缓存 因为cpu缓存是具有局部性原理的cpu每次在读取内存的数据时会把它缓存在cpu缓存中这样就可以避免每次都直接到内存中去读取数据可以有效的提高效率而cpu的局部性原理则是它每次到内存读取数据时会顺带把你需要读取的数据的周边的数据也一并读到缓存中。因为cpu会觉得你有很大的概率会读取周边的数据。而数组刚好内存存储就是连续的所以就可以有效的利用到这一点减少直接到内存中去读取的次数。而LinkedList则没法很好的利用这一点因为它在内存中数据存储不是连续的所以在读取时没法有效的把接近的数据存储到CPU缓存中。 LinkedList 基于链表内存存储不是连续的随机访问较慢因为内存存储不是连续的没法通过下标计算找到想要寻找的元素所以在查找时需要通过链表一个一个去遍历才能找到需要寻找的元素头尾插入删除性能较高而中间位置的插入删除非常慢因为插入需要先执行查询找到指定的位置然后再去执行添加而LinkedList执行查询的效率非常的慢综合下来再中间部分执行插入时效率反而会比ArrayList慢很多占用内存比较多因为LinkedList是由一个一个的Node对象组成每个Node对象中又存储了头节点和尾节点和数据所以先对于ArrayList的内存占用会高很多
http://www.w-s-a.com/news/151608/

相关文章:

  • 建设小辣猫的网站电子毕业设计网站建设
  • 询广西南宁网站运营礼品定制
  • 建筑公司网站作用免费查看招标信息的网站
  • 建筑设计公司名字起名大全html网站 怎么做seo
  • 网站群建设模板迁移原站迁移pc巩义网站建设案例课堂
  • 烟台高端网站开发wordpress 设置权限
  • 中小企业网站制作流程网站开发和设计人员的岗位要求
  • 公司网站建设多少费用河北城乡建设官网站
  • 国科联创网站建设广告传媒公司招聘信息
  • 网站后台文章删了 怎么前台还有一级做爰片软件网站
  • 辽宁省建设注册中心网站wordpress 博客插件
  • 做电商看的网站有哪些网站建设需求策划书
  • 关于网站建设交易流程的描述一句话哪些网站用户体验好
  • 男女做暖暖的网站大全深圳平台网站建设外包
  • 凯里展示型网站设计抖音代运营收费详细价格
  • 外包网站会自己做原型吗网站制作怎样盈利
  • 为什么在百度搜不到我的网站电商网站开发过程
  • 什么是网站反链网页设计页面链接
  • 佛山企业网站制作韩国seocaso
  • 微信公司网站vue做社区网站
  • 蒙阴网站优化五核网站建设
  • 企业微商城网站建设wordpress新闻是哪个表
  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文