gpt4 book ai didi

java - 修改大小时不更新数组信息的方法

转载 作者:行者123 更新时间:2023-12-02 04:05:42 24 4
gpt4 key购买 nike

我的方法没有更新数组的信息,因此使执行的多个操作毫无用处。仅当我用不同大小的新数组覆盖旧数组时才会发生这种情况。感谢您提前提供的任何帮助。我知道我正在编写的代码毫无意义并且已经完成了。我还意识到我还没有创建所有方法。

驱动程序类别:

public class CustomListDriver {
static CustomList a;
static Object d = new Object();

public static void main(String[] args) {
String[] x = {"one", "two", "three", "four", "five"};
CustomList<String> list = new CustomList<String>(x);

list.set(2, "seven");

list.add("element", 1);

System.out.println("\n\n\n");

list.remove(0);

System.out.println("\n\n\n");

list.print();
}
}

方法:

import java.util.AbstractList;
@SuppressWarnings("unchecked")

public class CustomList<T> extends AbstractList<T> {

private T[] a;

/**
* Description
* @param x param description
* @return return description
*/
CustomList(T[] array) {
a = array;

}

/**
* Description
* @param x param description
* @return return description
*/
public CustomList() {
a = (T[]) new Object[0];
}

/**
* Description
* @param index param determines
* @return return description
*/
public T get(int index) {
return a[index];
}

/**
* Description
* @param x param description
* @return return description
*/
public T set(int index, T element) {
a[index] = element;
return element;
}

/**
* Description
* @param x param description
* @return return description
*/
public int size() {
return 1;
}

/**
* Description
* @param x param description
* @return return description
*/
public boolean add(T element, int index) {

T[] temp = a;
T[] a = (T[]) new Object[temp.length+1];

for(int i = 0; i<temp.length; i++) {

a[i] = temp[i];

if(i==index) {
a[index] = element;
i=a.length;
}
}

for(int f = index+1; f<=temp.length; f++) {
a[f] = temp[f-1];
}

for(int q = 0; q<=a.length-1; q++) {
System.out.println(a[q]);
}


return true;
}

/**
* Description
* @param x param description
* @return return description
*/
public T remove(int index) {

a[index] = null;



for(int i = 0; i<=a.length-2; i++)
{
if(i == index) {
a[i] = a[i+1];
a[i+1] = null;
index++;
}
}

T[] temp = a;
T[] a = (T[]) new Object[temp.length-1];

for(int j = 0; j<a.length; j++)
{
a[j] = temp[j];
}



for(int q = 0; q<=a.length-1; q++) {
System.out.println(a[q]);
}

a = a;

return a[0];
}

/**
* Description
* @param x param description
* @return return description
*/
public void clear() {
}


public void print() {
for(int f = 0; f<=a.length-1; f++) {
System.out.println(a[f]);
}
}
}

最佳答案

T[] a = (T[]) new Object[temp.length+1];

这一行创建了一个新变量a,它遮蔽了实际的a,这意味着它是一个完全不同的变量,恰好被命名为相同的。看来你想要的是

a = (T[]) new Object[temp.length+1];

引用预先存在的变量a

关于java - 修改大小时不更新数组信息的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34299312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com