java实现智能数组
来源:互联网 发布:mac word 勾选 编辑:程序博客网 时间:2024/06/06 12:38
题目:
java提供的数组有个特点: 当数组元素的个数确定后,就不能再追加元素了。
也就是说,数组的大小在创建的时候就固定了。
现在请你来写一个智能数组类 SmartArray,它能够根据需要动态地分配空间。
实际上,它只不过是在其它位置分配新的数组,然后把旧的数据拷贝过去。
请提供数组访问方法:
int get(int idx); // 返回指定位置的元素值
void set(int idx, int value); // 对指定的下标元素设置新值。当然,如果下标超出了原来数组的大小,则自动分配新的空间。
java提供的数组有个特点: 当数组元素的个数确定后,就不能再追加元素了。
也就是说,数组的大小在创建的时候就固定了。
现在请你来写一个智能数组类 SmartArray,它能够根据需要动态地分配空间。
实际上,它只不过是在其它位置分配新的数组,然后把旧的数据拷贝过去。
请提供数组访问方法:
int get(int idx); // 返回指定位置的元素值
void set(int idx, int value); // 对指定的下标元素设置新值。当然,如果下标超出了原来数组的大小,则自动分配新的空间。
代码:
class SmartArray{private int capacity; // 程序实际存储数据的数组大小private int size; // 用户视角的数组大小private int[] data; //工作数组public SmartArray(){capacity = 16;size = 0;data = new int[capacity];}public int get(int idx){return data[idx];}public void set(int idx, int value){if(idx >= capacity){ // 重新分配,拷贝就数据if(idx >= capacity* 2) capacity = idx+1;elsecapacity = capacity * 2;int[] dd = new int[capacity];for(int i=0; i<size; i++){dd[i] = data[i];}data = dd; //指向新数据,丢掉老数组}data[idx] = value;if(idx+1>size) size = idx+1;}public int length() { return size; }}public class MyA{public static void main(String[] args){SmartArray a = new SmartArray();a.set(2,22);a.set(3,33);a.set(9,99);a.set(15,1515);for(int i=0; i<a.length(); i++){System.out.println(i + ": " + a.get(i));}}}
0 0
- java实现智能数组
- java实现动态智能数组,将旧数组copy到新数组
- C++模板实现智能数组类
- java 实现小黄鸡智能聊天
- Java智能五子棋的实现
- 智能数组
- 如何用Java实现智能对话机器人
- java数组实现约瑟夫
- JAVA Josephus(数组实现)
- 循环数组java实现
- java数组实现栈
- java实现数组逆序
- 数据结构-Java实现-数组
- java数组实现栈
- java 数组实现向量
- java 数组实现栈
- java实现可变数组
- 螺旋数组java实现
- 面试-Thread类和Rannable接口的区别和联系
- java组合模式
- win8中安装.NET Framework 3.5
- Maven 环境的配置
- hibernate马士兵笔记
- java实现智能数组
- 究竟什么是敏捷测试
- 第六周项目一-体验常成员函数
- Android Notes(06) - Touch事件分发响应机制
- java组合模式实例
- Ubuntu Unity上修改应用程序图标
- codeforces#219_div2_B Making Sequences is Fun
- 喜欢现在的生活
- Spring学习流程(马士兵笔记)