数组还是好说,学过一两门编程语言的就知道,需要注意的是数组声明时需要把大小给它定下来,比如声明一个字符串类型的数组:String str[]=new String[10];
但是问题就来了,每次都是大小确定的数组,我需要数组大小不固定随时变化怎么办呢?
动态数组就这样应运而生,龙哥给我们讲的是自己用代码写动态数组,并非用的ArrayList
看看字符串动态数组的写法:
package 数组与动态数组;
/**
* 动态数组:存放字符串的
*
* @author kowloon
*
*/
public class DynamicArray {
// 定义一个原始数组
String[] src = new String[0];
/**
* 将指定元素放入数组
*
* @param s
* 要放入的元素内容
*/
public void add(String s) {
//三个新概念
//容量、增长比率、可变数组长度(元素个数)
// 定义一个新数组,长度是原始数组长度+1
String[] dest = new String[src.length + 1];
// 将新元素放入新数组的最后一个下标位置
dest[dest.length - 1] = s;
// 将原始数组中的数据考入新数组
for (int i = 0; i < src.length; i++) {
dest[i] = src[i];
}
// 将src指向新数组
src = dest;
}
/**
* 根据下标取出元素
*
* @param index
* 要取出的元素的下标
* @return 返回取得的元素
*/
public String get(int index) {
String s = src[index];
return s;
}
/**
* 获得数组中的元素个数
*
* @return 返回获得的元素个数
*/
public int size() {
return src.length;
}
/**
* 将指定的元素放入指定的位置
*
* @param s
* 要放入的元素
* @param index
* 元素所在的位置
*/
public void insert(String s, int index) {
//定义新数组 长度在原来的基础上加一
String[] dest1=new String[src.length + 1];
//从index号元素开始向后挪位置
for(int i=index;i<src.length;i++)
{
dest1[i+1]=src[i];
}
//把index前面的元素拷贝到新数组
for(int i=0;i<index;i++)
{
dest1[i]=src[i];
}
dest1[index]=s;
src = dest1;
}
/**
* 修改指定位置的元素
*
* @param s
* 修改后的新元素
* @param index
* 元素的位置
*/
public void modify(String s, int index) {
src[index]=s;
}
/**
* 删除指定位置的元素
*
* @param index
* 要删除的元素的位置
* @return 返回被删除的元素
*/
public String delete(int index) {
//新数组长度为原来的减一
String[] dest =new String[src.length-1];
//把被减的元素取出来等会儿返回它
String s=src[index];
//把index号元素之前的都复制给新数组
for(int i=0;i<index;i++)
{
dest[i]=src[i];
}
//把原数组index号元素后的复制到新数组
for(int i=index+1;i<src.length;i++)
{
dest[i-1]=src[i];
}
src=dest;
return s;
}
/**
* 删除指定的元素
* @param s 要删除的元素
*/
public void delete(String s){
}
}
总结:
总体来说呢,思想就是只要涉及到数组的长度需要增加或者减小的时候就必须用一个新的数组来代替原来的数组啦, delete的时候数组长度不是需要减小吗?所以在delete函数里面需要有一个String[] dest=new String[src.length-1]来代替原来的数组,这个新的数组的长度总是比原来的数组大小小1,所以new String[src,length-1] (src为原数组) ,删除的时候我们用的是指定的下标(index)来删除元素,怎么来删除这个元素呢?新是数组怎么来构造呢?很简单啦,只要index号元素前面的不变,用一个for循环把它们拷贝过来就行啦,接着再用一个for循环把除开index号元素外的元素按顺序全部拷贝到新数组,这样新数组里面就没有了index号元素了,最后不要忘记把原数组src指向新数组dest (src=dest;),其他的操作函数思想大致是一样的。
相关推荐
4. **转换为Array**: 如果需要将ArrayList转换回String数组,可以使用toArray()方法,但需要传递一个空的String数组作为目标。 ```java String[] newArray = new String[stringList.size()]; stringList.toArray...
VC++6.0 中动态数组实现 在 VC++6.0 中,动态数组实现是指在运行时动态地分配数组,而不是在编译时固定数组长度。这种实现方式可以让程序在执行时根据需要动态地分配数组长度。 动态数组实现的重要特点是: 1. ...
java字符串转String数组简单实例,简单但很实用
### List转换成String数组 在Java编程语言中,经常需要将`List<String>`类型的数据转换为`String[]`数组类型,以便于进行某些特定的操作或适应某些方法的要求。本文将详细探讨这一转换过程,并通过几个具体的示例来...
### Java动态数组的应用 在Java编程语言中,动态数组是一种非常重要的数据结构,它能够根据实际需求自动调整其大小,从而有效地存储和管理元素。在本文中,我们将深入探讨Java中的动态数组,包括其实现原理、应用...
### List转换成String数组 在Java编程中,我们经常需要对集合进行操作,尤其是在处理大量字符串数据时。本文将详细介绍如何将一个`List<String>`类型的集合转换为`String[]`数组,并通过不同的方法来实现这一过程。...
在本实验中,我们将学习如何使用条件转移指令、串操作指令和循环指令来编写一个将一个包含20个元素的数组STRING分成一个偶数数组STRING1和一个奇数数组STRING2的程序。 二、实验要求 1. 掌握条件转移指令的使用...
下面将详细介绍如何在VC++6.0中实现动态数组,特别是涉及到string类对象数组的情况。 1. 动态数组的定义 在C++中,动态数组通过`new`运算符进行创建。例如,声明一个包含10个未初始化整型元素的数组,可以这样写: ...
本教程将深入探讨数组的概念、动态数组的建立与声明,帮助你更好地理解和运用VB中的数组。 首先,我们要理解数组的基本概念。数组是由相同类型的数据元素构成的有序集合,每个元素都有一个唯一的索引,通过这个索引...
在编程领域,尤其是在使用C++、Java或C#等面向对象的语言时,经常需要将字符串数组转换为单一的string类型。这种操作在处理数据输入、输出或者格式化时非常常见。下面我们将详细讨论如何在不同语言中实现这个过程,...
### VB 动态数组的实现 #### 背景与挑战 在Visual Basic (VB) 编程语言中,处理动态数组的需求时面临着一定的限制。与C/C++等语言能够直接通过指针操作来实现内存的动态分配不同,VB 缺乏原生支持这种灵活的数组...
### 将ILIST集合转换成String数组的方法 在软件开发过程中,经常需要处理不同类型的数据结构之间的转换,尤其是在进行数据交互时。本篇文章将详细介绍如何将一个`ILIST`集合转换为`String`数组,这对于理解.NET环境...
java代码-使用java增强for循环 string数组赋值的源代码 ——学习参考资料:仅用于个人学习使用!
`ArrayList`是`List`接口的一个具体实现,提供了基于动态数组的数据结构。 3. **`String`数组**:`String`数组是Java中一种基本的数据结构,用于存储多个字符串对象。数组的大小在创建时是固定的,元素可以通过索引...
var dynaArr []string // 声明一个空的字符串动态数组 dynaArr = append(dynaArr, "one") // 使用append函数向数组中添加元素 ``` `append` 函数是Go语言中用于向切片添加元素的关键函数,它可以将一个或多个元素...
当用new为一个动态数组申请一块内存时,数组中的元素是连续存储的,例如 vector和string。当向一个动态数组添加元素时,如果没有空间容纳新元素,不可能简单地将新元素添加到内存中的其他位置——因为元素必须连续...
std::string、char*、const char*转托管byte数组或托管字符串String std::string、char*、const char*是C++中三个不同的字符串表示方式,它们都可以转换为托管的byte数组或字符串String,但是在C++/CLI中,它们的...
简单实现二维string数组存放薪金和职员姓名,以及插入、冒泡排序、删除等操作。上财c++二维数组作业题。