java怎样实现动态数组?
在学习Tomcat源码时看到很多地方都用到了动态数组的设计,而不是直接使用集合。这种方法很值得我们学习借鉴,所以在此单独拿出来学习讨论。
比如其中向容器Server增加service的方法如下(其中与本文讨论无关的代码已省略):
private Service services[] = new Service[0];public void addService(Service service) {Service results[] = new Service[services.length + 1];System.arraycopy(services, 0, results, 0, services.length);results[services.length] = service;services = results;}}
上面代码用System.arraycopy方法就很巧妙的将一个空间大小为0的数组动态变长。我们只需要声明一个数组类型而无需关心数组真正可用长度是多少。如果需要删除其中某个值,代码如下。
public void removeService(Service service) {synchronized (servicesLock) {int j = -1;for (int i = 0; i < services.length; i++) {if (service == services[i]) {j = i;break;}}if (j < 0)return;int k = 0;Service results[] = new Service[services.length - 1];for (int i = 0; i < services.length; i++) {if (i != j)results[k++] = services[i];}services = results;}}
java怎样实现动态数组?相关推荐
- Java大用处——动态数组的实现
数组大家平常都用,数组虽然有优点但是最让我不爽的就是它的定长. 有人会说,那就用链表啊,链表插入,删除是方便,但是遍历速度慢. 所以,我就想写一个动态的数组. 原理是这样的,当你想增加数组大小时,我们 ...
- Java——ArrayList(动态数组)介绍
文章目录 一.简介 二.使用 1.构造 1.1 无参构造 1.2 指定初始容量 1.3 利用其他的collection进行构造 2.基础操作 2.1 添加元素 2.2 删除元素 2.3 修改元素 2. ...
- java怎么复制动态数组_Java 数组排序复制等操作(Java Arraycopy)
//手机终端 请上下左右 滑动屏幕 观看更全! //package Main; public class Arraycopy { public static void main(String[] ar ...
- c++ 构造函数数组_“动态数组”的设计与实现
引言 数据结构是计算机存储.组织数据的方式.常见的数据结构有: (1)线性结构 如:线性表(包括:数组.链表.栈.队列.哈希表). (2)树形结构 如:二叉树.AVL树.红黑树.B树.堆.Trie.哈 ...
- 2021-9-下旬 数据结构-线性表-动态数组-java代码实现
信管的数据结构讲的太水了,遂重学(看的网课:恋上数据结构与算法,讲的very good),为算法学习打基础(都大三了还在打基础),顺便在leetcode上跟进一些相关的题,记录在这里,这里最方便复习 ...
- 基于java的数据结构学习——动态数组C++类模板(含拷贝构造,重载常见运算符)
之前实现了java的动态数组,试着写了个C++版的,同样对时间复杂度振荡进行了处理.纯手打,代码如下 : // // Created by PC-Saw on 2018/12/19. //#ifnde ...
- Java 数组常用操作二(扩充、扩容、重复数据、动态数组、数组差集、数组交集、查找指定元素、判断是否相同、数组合并)
数组扩容(扩充) public class Main {public static void main(String[] args) {String[] names = new String[] { ...
- java动态数组的实现的_基于Java的动态数组分析与实现
动态数组 概念 基于Java提供的静态数组封装自己的动态数组,动态数组涉及的组成部分如下图所示. 组成部分解读data:静态数组,通过泛型支持多种类型的元素:private E[] data;. si ...
- 简单的动态网站java,Java实践:一个简单的动态数组实现
一个简单的动态数组实现 基于数组实现 添加10w的容量 在删除 所有 容量 平均是 0.4秒 这个效率是可观的 下面来一起看看代码package com.array; import java.util ...
最新文章
- 关于Python函数的一些问题
- Web性能优化之雅虎军规
- mysql自带命令使用教程_自用mysql自带命令实现数据库备份还原
- 微博关注者数量在计算中的作用
- 基于手机系统的实时目标检测
- python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践
- 按键精灵_汉字转拼音
- 走进WPF之开发类似Visio软件
- 飞思卡尔智能车知识总结
- 在校大学生如何申请免费教育版 Intellij IDEA
- Python爬取豆瓣电影top250(附全部源码)
- numpy_abs和fabs
- 让·阿方索·德纳(Jean Alfonso decena)引领对话式人工智能创新并颠覆菲律宾金融科技...
- iMeta: 整合宏组学重新认识生命和环境科学
- 开启VPN和NAT服务
- MySQL TRUNCATE 函数详解
- 关于vue ui启动没反应问题
- 多媒体计算机的图像包括,多媒体计算机常用的图像包括什么
- 四元数矩阵向量积 matlab
- 生活中,真的有那种令人驻足的美女吗?