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

南昌网站开发深圳哪些建设公司招聘

南昌网站开发,深圳哪些建设公司招聘,网站色彩,跨境电商开发目录 简介 数组与集合的区别如下#xff1a; 介绍 AbstractList 和 AbstractSequentialList Vector 替代方案 Stack ArrayList LinkedList 前言-与正文无关 生活远不止眼前的苦劳与奔波#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界…       目录 简介 数组与集合的区别如下 介绍 AbstractList 和 AbstractSequentialList Vector 替代方案 Stack ArrayList LinkedList 前言-与正文无关 生活远不止眼前的苦劳与奔波它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中我们往往容易陷入工作的漩涡忘记了停下脚步感受周围的世界。让我们一起提醒自己要适时放慢脚步欣赏生活中的每一道风景享受与家人朋友的温馨时光发现那些平凡日子里隐藏的幸福时刻。因为这些点点滴滴汇聚起来的才是构成我们丰富多彩生活的本质。希望每个人都能在繁忙的生活中找到自己的快乐之源不仅仅为了生存而工作更为了更好的生活而生活。 送你张美图希望你开心 简介 集合可以看作是一种容器用来存储对象信息。所有集合类都位于java.util包下值得一提的是支持多线程的集合类位于java.util.concurrent包下。 List 接口直接继承 Collection 接口它定义为可以存储重复元素的集合并且元素按照插入顺序有序排列且可以通过索引访问指定位置的元素。常见的实现有ArrayList、LinkedList、Vector和Stack 数组与集合的区别如下 1数组长度不可变化而且无法保存具有映射关系的数据集合类用于保存数量不确定的数据以及保存具有映射关系的数据。 2数组元素既可以是基本类型的值也可以是对象集合只能保存对象。 介绍 AbstractList 和 AbstractSequentialList AbstractList 抽象类实现了 List 接口其内部实现了所有的 List 都需具备的功能子类可以专注于实现自己具体的操作逻辑。 // 查找元素 o 第一次出现的索引位置 public int indexOf(Object o) // 查找元素 o 最后一次出现的索引位置 public int lastIndexOf(Object o) //··· AbstractSequentialList 抽象类继承了 AbstractList在原基础上限制了访问元素的顺序只能够按照顺序访问而不支持随机访问如果需要满足随机访问的特性出现了LinkedList继承 AbstractList子类 LinkedList 使用链表实现所以仅能支持顺序访问。 LinkedList LinkedList 底层采用双向链表数据结构存储元素由于链表的内存地址非连续所以它不具备随机访问的特点但由于它利用指针连接各个元素所以插入、删除元素只需要操作指针不需要移动元素故具有增删快、查询慢的特点。它也是一个非线程安全的集合。 由于以双向链表作为数据结构它是线程不安全的集合存储的每个节点称为一个Node上图object加前后空白区域下图可以看到 Node 中保存了next和prev指针上图object的前后的空白区域item是该节点的值上图object的不加前后空白区域。在插入和删除时时间复杂度都保持为 O(1) 关于 LinkedList除了它是以链表实现的集合外还有一些特殊的特性需要注意的。 优势LinkedList 底层没有扩容机制使用双向链表存储元素所以插入和删除元素效率较高适用于频繁操作元素的场景劣势LinkedList 不具备随机访问的特点查找某个元素只能从 head 或 tail 指针一个一个比较所以查找中间的元素时效率很低底层查找优化LinkedList 查找某个下标 index 的元素时做了优化if (index this.size 1)这个条件检查要查找的索引是否在链表的前半部分。this.size 1 是位移操作等效于 this.size / 2即链表长度的一半。如果索引在前半部分方法从链表的第一个节点this.first开始通过循环遍历每次通过 x x.next 移动到下一个节点直到到达指定索引处的节点。反之亦然。 // 遍历元素数量 获取到指定索引位置的值 LinkedList.NodeE node(int index) {// 注意***判断index在总数量的前半部分还是后半部分这样仅需要遍历一半的数据量就能找到具体的值 有种取半操作的含义if (index (size 1)) {//如果在前半部分就从0开始正序遍历 直到找到元素NodeE x first;for (int i 0; i index; i)x x.next;return x;} else {// 如果在后半部分 就从最后开始倒序遍历 直到找到元素NodeE x last;for (int i size - 1; i index; i--)x x.prev;return x;}} 双端队列使用双端链表实现并且实现了 Deque 接口使得 LinkedList 可以用作双端队列。下图可以看到 Node 是集合中的元素提供了前驱指针和后继指针还提供了一系列操作头结点和尾结点的方法具有双端队列的特性。 LinkedList 集合最让人熟知的是它的链表结构但是我们同时也要注意它是一个双端队列型的集合。 DequeObject deque new LinkedList();     Vector了解即可 Vector 同 ArrayList一样,都是基于数组实现的,只不过 Vector  是一个线程安全的容器,它对内部的每个方法都简单粗暴的上锁,但是通常这种同步方式需要的开销比较大, 因此,访问元素的效率要远远低于 ArrayList。还有一点在于扩容上,ArrayList 扩容后的数组长度会增加 50%,而 Vector 的扩容长度后数组会增加一倍。 Vector 在现在已经是一种过时的集合了包括继承它的 Stack 集合也如此它们被淘汰的原因都是因为性能低下。 原因是JDK 1.0 时代ArrayList 还没诞生大家都是使用 Vector 集合但由于 Vector 的每个操作都被 synchronized 关键字修饰即使在线程安全的情况下仍然进行无意义的加锁与释放锁造成额外的性能开销做了无用功。 在 JDK 1.2 时Collection 家族出现了它提供了大量高性能、适用于不同场合的集合而 Vector 也是其中一员但由于 Vector 在每个方法上都加了锁由于需要兼容许多老的项目很难在此基础上优化Vector了所以渐渐地也就被历史淘汰了。 替代方案 现在在线程安全的情况下不需要选用 Vector 集合取而代之的是 ArrayList 集合在并发环境下出现了 CopyOnWriteArrayListVector 完全被弃用了。 Stack了解即可 Stack是一种后入先出LIFO型的集合容器如图中所示大雄是最后一个进入容器的top指针指向大雄那么弹出元素时大雄也是第一个被弹出去的。 Stack 继承了 Vector 类常用方法如下 Push: 向栈顶添加一个元素。Pop: 移除并返回栈顶元素。Peek (或 Top): 查看栈顶元素但不从栈中移除它。isEmpty: 检查栈是否为空。 但由于继承了 Vector正所谓跟错老大没福报而 Vector 的所有操作都是同步的Stack 也渐渐被淘汰了。 取而代之的是后起之秀 Deque接口其实现有 ArrayDeque该数据结构更加完善、可靠性更好依靠队列也可以实现LIFO的栈操作所以优先选择 ArrayDeque 实现栈。 DequeInteger stack new ArrayDeque();// 压栈操作 stack.push(1); stack.push(2);// 查看栈顶元素 int top stack.peek(); // 返回 2但不移除// 弹栈操作 int popped stack.pop(); // 返回并移除 2ArrayList ArrayList 以数组作为存储结构它是线程不安全的集合具有查询快、在数组中间或头部增删慢的特点所以它除了线程不安全这一点其余可以替代Vector而且线程安全的 ArrayList 可以使用 CopyOnWriteArrayList代替 Vector。 关于 ArrayList 有几个重要的点需要注意的 具备随机访问特点访问元素的效率较高ArrayList 在频繁插入、删除集合元素的场景下效率较低。 底层数据结构ArrayList 底层使用数组作为存储结构具备查找快、增删慢的特点 线程安全性ArrayList 是线程不安全的集合 ArrayList 首次扩容后的长度为 10调用 add() 时需要计算容器的最小容量。可以看到如果数组elementData为空数组会将最小容量设置为10之后会将数组长度完成首次扩容到 10。 // new ArrayList 时的默认空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; // 默认容量 private static final int DEFAULT_CAPACITY 10; // 计算该容器应该满足的最小容量 private static int calculateCapacity(Object[] elementData, int minCapacity) {if (elementData DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {return Math.max(DEFAULT_CAPACITY, minCapacity);}return minCapacity; } ArrayList扩容的本质就是计算出新的扩容数组的size后实例化并将原有数组内容复制到新数组中去。集合从第二次扩容开始数组长度将扩容为原来的 1.5 倍即newLength oldLength * 1.5 ------------------------------------------与正文内容无关------------------------------------  如果觉的文章写对各位读者老爷们有帮助的话麻烦点赞加关注呗作者在这拜谢了! 混口饭吃了如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我本人看到一定马上回复 这是我全部文章所在目录看看是否有你需要的如果遇到觉得不对地方请留言看到后我会查阅进行改正。 A乐神-CSDN博客
http://www.hkea.cn/news/14371377/

相关文章:

  • 咸阳网站设计建设公司做的最少的网站
  • 哪家公司做网站便宜餐饮酒店网站怎么做
  • 塔式服务器主机建网站做统计表的网站
  • 域名查询网站外贸实用工具
  • 儿童产品网站建设成都娱乐场所关闭最新消息
  • 东莞网网站公司简介wordpress恢复数据库菜单不见了
  • 简述营销网站建设包括哪些内容广告优化师加班严重
  • 石家庄建站模板厂家自贡市工程造价信息网
  • 专门做卫生间效果图的网站搜索引擎网站推广如何优化
  • 上海的建设网站制作西安建网站公司
  • 景泰做网站动漫网页设计模板素材
  • 淄博高端网站下载软件推广
  • 小型企业的网站建设论文青岛做网站定制
  • 定制网站开发价格汕头做网站
  • 专业网站定制平台网站开发报价 知乎
  • 山西城乡建设学校报名网站外贸公司建网站一般多少钱
  • 优秀学校网站模板网站模板是怎么制作
  • 宁夏网站建设一条龙一个服务器可以建几个网站
  • 网站网页制作公司1+x网店运营推广
  • wordpress 模板森林安卓优化清理大师
  • 网站建设总体上可划分为两个阶段高档网站建
  • 建立公司网站流程品牌设计策划
  • 扬州有什么做网站的公司网站平台设计费用
  • 北京上地网站建设wordpress扒站工具
  • 郑州新密网站建设建网站学什么
  • 360购物网站怎么做的网络营销常用的方法包括
  • 制作网站网络科技公司做淘宝可以在别的网站发信息吗
  • 阿里巴巴网站广告怎么做node有类似Wordpress
  • 查询备案网站百度搜索推广多少钱
  • 人工做流量的网站电子商务网站体系结构有哪些