`
shenyu
  • 浏览: 122992 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Array 可变长可变维数组

 
阅读更多

一个可以变长,变维的数组(只可以变大),用来替代多维数组

基本做法与Array相似

set(Object value, int... pos):放入数值,第一个参数是要放入的内容,其余是下标

get(int... pos):取出数值,参数是下标,返回那个下标指定的数值

 

class Array {
	private Object[] array = new Object[0];
	private int length = 0;
	public void set(Object value, int... pos) {
		set(value,pos,0);
	}

	private void set(Object value,int[] pos, int begin) {
		if(pos[begin] >= array.length) {
			changeCapacity(pos[begin] + getNewCount(array.length));
			length = pos[begin] + 1;
		}
		if(pos.length == begin+1) array[pos[begin]] = value;
		else {
			if(array[pos[begin]] == null) array[pos[begin]] = new Array();
			((Array)array[pos[begin]]).set(value,pos,++begin);
		}
	}

	public Object get(int... pos) {
		return get(pos,0);
	}

	private Object get(int[] pos, int begin){
		if(pos.length == begin+1) return array[pos[begin]];
		else return ((Array)array[pos[begin]]).get(pos,++begin);
	}

	public int getLength(int... pos) {
		return getLength(pos,0);
	}

	public int getLength(int[] pos, int begin) {
		if(pos.length == begin) return length;
		else return ((Array)array[pos[begin]]).getLength(pos,++begin);
	}
	
	private void changeCapacity(int length) {
		Object[] temp = new Object[length];
		for(int i=0; i<array.length; i++) {
			temp[i] = array[i];
		}
		array = temp;
	}

	private int getNewCount(int lenght) {
		return 10;
	}
}
 
分享到:
评论

相关推荐

    TIA博途中变长数组的介绍与使用入门示例.docx

    在TIA博途中,变长数组的声明通常以`Array[*] of 数据类型`的形式出现,其中`*`表示数组长度可变。 使用变长数组时,需要注意以下几点: 1. **接口参数定义**:当你在FC或FB的接口中使用变长数组时,应声明为`...

    变长数组编程

    1. 变长一维数组 在C++中,传统的数组在声明时需要指定大小,但变长数组可以在运行时根据用户输入或其他条件动态分配内存。以下是一个简单的示例: ```cpp int len; cin &gt;&gt; len; int *p = new int[len]; // ... ...

    TIA博途中数组Array【】的基本使用方法详解.docx

    - 从S7-1200 V4.2开始,FC的Input/Output/InOut以及FB的InOut可以定义形如Array[*]这样的变长数组。 - 要求必须是优化FC/FB块,在调用FC/FB的实参中可以填写任意数据类型相同的数组变量。 - 也可以定义多维变长...

    可变长数组和字典树

    在编程领域,可变长数组(也称为动态数组)和字典树(又称Trie树或前缀树)是两种非常重要的数据结构。它们在不同的场景下有着广泛的应用,尤其在处理大量数据时能展现出高效的性能。 首先,我们来详细讨论可变长...

    类模板实践-可变长数组类.7z

    总结起来,"类模板实践-可变长数组类"这个项目旨在通过实现一个自定义的类模板`Array`,让初学者理解C++中的类模板和动态数组的概念,同时掌握如何在C++中正确管理内存和实现类型安全的接口。通过这个实践,可以提升...

    Java数组传递及可变参数操作实例详解

    Java数组传递及可变参数操作实例详解 Java 数组传递是指在方法之间传递数组对象的引用,而不是传递数组对象本身。这意味着,方法中对数组的修改将会影响原数组。在 Java 中,所有对象都是通过引用进行操作的,而...

    一维数组 教案模板

    一维数组在内存中是连续存储的,这使得对数组元素的访问和操作变得高效。 **定义格式**: ```c 类型说明符 数组名[常量表达式]; ``` - **类型说明符**:指定数组中元素的数据类型,如`int`、`float`、`char`等。 - ...

    数据结构课程设计-二维数组

    这样的方法允许我们更灵活地管理内存,特别是在处理大小未知或可变的二维数组时。 文档部分可能会解释这些操作的逻辑和步骤,以及如何将它们与数据结构课程中的其他概念(如链表、栈、队列等)结合使用。它还可能...

    PHP基于array_unique实现二维数组去重

    首先,我们需要将二维数组转换为一维数组,这可以通过`implode`或`join`函数完成,然后使用`array_unique`去除重复的字符串,最后再将一维数组转换回二维。这里是一个例子: ```php function array_unique_fb($...

    C语言中的可变数组和单链表 数组和链表.pdf

    我们可以使用array_create函数创建一个可变数组,并使用array_free函数释放数组的内存。array_size函数可以获取数组的大小,array_at函数可以获取数组的某个元素。 在main函数中,我们创建了一个大小为100的可变...

    matlab 三维 数组教程

    例如,两个三维数组可以进行元素级别的加法、减法、乘法和除法,如`result = array1 + array2`。这使得对整个数据集进行计算变得十分便捷。 三维数组的可视化是分析数据的关键步骤。MATLAB提供了`volumeViewer`函数...

    C语言可变长数组(VLA)详解与应用

    为了解决这个问题,C99标准引入了一个新的概念:可变长数组(Variable-Length Array,简称VLA)。VLA允许数组的大小在运行时确定,这为处理大小不确定的数据集提供了极大的便利。然而,VLA也带来了一些潜在的问题和...

    C++中二维数组的动态分配

    #### 三、示例二:可变大小的二维数组 接下来,我们来看一个更复杂的例子,创建一个每一行大小不相同的二维数组: ```cpp #include using std::cin; using std::cout; using std::endl; int main() { int i, j;...

    C语言可变长度数组(int型)实现

    gcc xxx.c vsArray.c array_t_s:可变大小的数组的类型 array_t:一个指针类型的别名,访问其内容时,遵循array_t_s的访问规则 函数的功能和使用方法都有注释 新手一个,代码写的不规范欢迎点评

    c语言二维数组初始化.pdf

    这种方法适用于数组大小可变或初值需要通过计算得到的情况。 **示例**: ```c int array[3][4]; int i, j; for (i = 0; i ; i++) { for (j = 0; j ; j++) { array[i][j] = i * 4 + j + 1; // 计算并赋值 } } ```...

    C/C++中传递多维数组的各种方法

    如果需要传递可变大小的数组或希望更灵活地管理内存,二级指针是一个更好的选择。 ### 结语 在 C/C++ 中,根据不同的需求选择合适的方法来传递多维数组至关重要。正确地理解和掌握数组和指针在函数参数中的行为,...

    12道不错的数组例题

    在方法内部,数组是可变的,可以修改其元素。 8. **动态数组ArrayList**: - 虽然基本类型的数组长度固定,但可以使用`ArrayList`类创建动态大小的数组。`ArrayList`继承自`List`接口,提供了添加、删除、查找和...

    jquery实现数组array、集合list、json类型的分页

    1. **数组Array分页**: 在JavaScript中,数组是最基础的数据结构之一。要对数组进行分页,我们需要计算每一页的数据量(通常称为“每页条目数”),然后根据当前页数获取对应范围的元素。例如,假设我们有100个...

    IOS开发基础之二维数组详解

    在这个例子中,我们创建了一个可变数组`mulArrayD1`,然后在循环中动态添加每个一维数组`arrayD2`。同样,我们可以通过索引来访问这些元素: ```objc NSLog(@"array2d[2][1]:%@", mulArrayD1[2][1]); NSLog(@"array...

    python 去除二维数组/二维列表中的重复行方法

    对于二维列表,操作方式基本相同,但由于列表本身是可变的,不能直接作为集合的元素,所以我们需要先将每个列表转换为元组。以下是如何操作的示例: ```python # 创建一个二维列表 list1 = [[1, 2], [3, 4], [5, 6]...

Global site tag (gtag.js) - Google Analytics