Java中没有内置的动态数组类,需要我们自己实现。下面是Java自定义动态数组的完整攻略。
需求分析
我们需要实现一个具有动态扩容功能的数组。当数组空间不够时,需要动态扩充,保证数据能够正常存储。
实现步骤
- 定义一个数组类,包含数组容量大小、元素个数和数组本身三个属性。
java
public class CustomArray<T> {
private int capacity;
private int size;
private T[] data;
}
- 实现构造函数,在构造函数中初始化数组大小和容量。
java
public CustomArray(int capacity){
this.capacity = capacity;
this.size = 0;
this.data = (T[])new Object[capacity];
}
- 实现动态扩容功能。当数组大小超出容量时,需要对数组进行扩容。
```java
private void resize(int newCapacity){
T[] newData = (T[])new Object[newCapacity];
for(int i = 0; i < size; i++){
newData[i] = data[i];
}
data = newData;
capacity = newCapacity;
}
public void add(T ele){
if(size == capacity){
resize(capacity * 2);
}
data[size++] = ele;
}
```
上面的代码中,resize
方法用于对数组进行扩容,add
方法用于向数组中添加元素。如果数组已满,就先调用resize
方法扩容。
- 实现获取元素和设置元素的方法。
```java
public T get(int index){
if(index < 0 || index >= size){
throw new IllegalArgumentException("Index is illegal.");
}
return data[index];
}
public void set(int index, T ele){
if(index < 0 || index >= size){
throw new IllegalArgumentException("Index is illegal.");
}
data[index] = ele;
}
```
上面的代码中,get
方法用于获取特定索引位置的元素,set
方法用于设置特定索引位置的元素。
- 实现获取元素个数、容量大小和判断数组空和满的方法。
```java
public int getSize(){
return size;
}
public int getCapacity(){
return capacity;
}
public boolean isEmpty(){
return size == 0;
}
public boolean isFull(){
return size == capacity;
}
```
上面的代码中,getSize
方法用于获取元素个数,getCapacity
方法用于获取数组容量大小,isEmpty
方法用于判断数组是否为空,isFull
方法用于判断数组是否已满。
示例说明
下面给出两个使用Java自定义动态数组类的示例。
示例1:对自定义数组进行排序
CustomArray<Integer> arr = new CustomArray<>(10);
arr.add(3);
arr.add(1);
arr.add(2);
arr.add(5);
arr.add(4);
Arrays.sort(arr.data, 0, arr.getSize());
for(int i = 0; i < arr.getSize(); i++){
System.out.println(arr.get(i));
}
上述代码中,首先创建自定义数组类,并向其中添加了五个元素。然后使用Arrays类中的sort方法对数组进行排序,最后遍历输出数组元素。
示例2:求自定义数组的平均值
CustomArray<Integer> arr = new CustomArray<>(10);
arr.add(3);
arr.add(1);
arr.add(2);
arr.add(5);
arr.add(4);
int sum = 0;
for(int i = 0; i < arr.getSize(); i++){
sum += arr.get(i);
}
double avg = sum / (double)arr.getSize();
System.out.println(avg);
上述代码中,首先创建自定义数组类,并向其中添加了五个元素。然后使用循环遍历数组,求得数组元素的和。最后计算数组的平均值并输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 自定义动态数组方式 - Python技术站