Java 我必须编写自己的trimtoSize()方法来创建一个新数组
有人给了我一个预先编写的程序,但有几个方法除外,其中一个是Java 我必须编写自己的trimtoSize()方法来创建一个新数组,java,arrays,Java,Arrays,有人给了我一个预先编写的程序,但有几个方法除外,其中一个是trimtoSize()。我知道它已经存在了,但为此我必须写我自己的。我必须使它在数组中有空的空间,我必须使用相同的值创建一个新数组,并使大小精确。我已经能够使用size()和data.length来比较大小,但是我不确定如何创建一个新数组,然后使用它,因为该函数不返回任何内容(它是空的) 这是我到目前为止所拥有的 public void trimToSize(){ Array<Integer> temp = new Arr
trimtoSize()
。我知道它已经存在了,但为此我必须写我自己的。我必须使它在数组中有空的空间,我必须使用相同的值创建一个新数组,并使大小精确。我已经能够使用size()
和data.length
来比较大小,但是我不确定如何创建一个新数组,然后使用它,因为该函数不返回任何内容(它是空的)
这是我到目前为止所拥有的
public void trimToSize(){
Array<Integer> temp = new Array<Integer>();
if(size() < data.length){
int max = size();
for(int i=0; i<size();i++){
temp.add(data[i]);
}
}}
public void trimToSize(){
数组温度=新数组();
if(size() 对于(int i=0;i我无法确定是否看到了代码的其余部分,但它似乎只是类的一部分,在该类中是一个名为data的整数数组。。。
如果这个假设是真的,那么这应该行得通
public void trimToSize() {
int size = 0;
for(int i = 0; i < this.data.length; i++) {
if(this.data[i] != null) {
size++;
}
}
Interger[] temp = new Interger[size];
for(int i = 0, j = 0; i < this.data.length; i++) {
if(this.data[i] != null) {
temp[j] = this.data[i];
j++;
}
}
this.data = temp;
}
public void trimToSize(){
int size=0;
for(int i=0;i
以下是我从你的问题中了解到的……你有一个不完整的预定义类,它模仿了数组列表的行为。你必须自己定义一个行为是trimToSize()
。根据
这只是为了保存内存。所以我想这里有一个类就是这样做的
public static class MyArrayList {
private Object[] array;
private int capacity;
private int size;
private int index;
public MyArrayList(int capacity) {
this.capacity = capacity;
array = new Object[capacity];
index = 0;
}
public int size() {
return size;
}
public int add(Object item) {
if (index == capacity) {
increaseSize();
}
array[index] = item;
index++;
size++;
return index;
}
public Object get(int index) {
if (0 <= index && index < size) {
return array[index];
} else {
throw new IndexOutOfBoundsException();
}
}
public void trimToSize() {
if (size < capacity) {
Object[] newArray = new Object[size];
System.arraycopy(array, 0, newArray, 0, size);
array = newArray;
capacity = size;
}
}
private void increaseSize() {
capacity++;
Object[] newArray = new Object[capacity];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
}
}
公共静态类MyArrayList{
私有对象[]数组;
私人int能力;
私有整数大小;
私有整数索引;
公共MyArrayList(内部容量){
这个。容量=容量;
数组=新对象[容量];
指数=0;
}
公共整数大小(){
返回大小;
}
公共整数添加(对象项){
如果(索引==容量){
增加大小();
}
数组[索引]=项;
索引++;
大小++;
收益指数;
}
公共对象get(int索引){
如果(0),请快速搜索方法参数和返回类型。您的答案将在那里找到。您可以在方法调用后将Arraylist作为参数传递给方法中的Arraylist。您可以使用它的引用,而无需返回它。
public static void main(String[] args) throws Exception {
MyArrayList myArrayList = new MyArrayList(5);
myArrayList.add(1);
myArrayList.add(2);
myArrayList.add(3);
for (int i = 0; i < myArrayList.size(); i++) {
System.out.println(myArrayList.get(i));
}
myArrayList.trimToSize();
myArrayList.add(4);
}