如何编写删除方法?
How to write a remove method?
编写一个名为 get 的方法,它将 return 来自给定索引的元素。 Returns -1 如果索引越界。
编写一个名为 remove 的方法,该方法将从给定索引中删除一个元素。 Returns -1 如果索引越界。在删除期间应相应地移动数据。
//This is the get method
public int get(int index){
if(index < 0 || index >= size) {
return -1;
}else {
return data[index];
}
}
//This is the remove method
public int remove(int index){
if(index < 0 || index >= size){
return -1;
}else {
for(int i = 0; i < size-1; i++) {
index[i] = index[i+1];
}
}
}
这是我得到的。不确定如何继续使用代码。如果有人可以指导我完成,我将不胜感激。谢谢!
您需要替换以下内容:
for(int i = 0; i < size-1; i++) {
index[i] = index[i+1];
}
与:
for(int i = index; i < size-1; i++) {
data[i] = data[i+1];
}
- 从
index
开始循环
index[i]
不会编译。应该是data[i]
吧。
注:
这不会删除最后一个元素。你需要专门检查一下。
到目前为止,您的想法是正确的。我将根据您的语法假设您使用的是数组。您的 get()
方法看起来不错,但您缺少 remove()
方法中的一些代码。
public int remove(int index){
//check for out-of-bounds
if(index < 0 || index >= size) //assumes size is set to the size of the array
{
return -1; }
else
{
for(int i = index; i < size-1; i++){
data[i] = data[i+1]; }
data[size-1] = 0; //assuming the array contains numbers, if not replace '0' with null
}
}
public class MyList<T> {
T[] items = (T[])new Object[10];
public int size() {
int counter=0;
for (int i = 0; i < items.length; i ++) {
if (items[i] != null) {
counter ++;
}
}
return counter;
}
public void remove(int t) {
for (int i = t; i < items.length-1; i++) {
items[i]=items[i+1];
}
items[items.length-1]=null;
items= Arrays.copyOf(items,size());
}
}
编写一个名为 get 的方法,它将 return 来自给定索引的元素。 Returns -1 如果索引越界。
编写一个名为 remove 的方法,该方法将从给定索引中删除一个元素。 Returns -1 如果索引越界。在删除期间应相应地移动数据。
//This is the get method
public int get(int index){
if(index < 0 || index >= size) {
return -1;
}else {
return data[index];
}
}
//This is the remove method
public int remove(int index){
if(index < 0 || index >= size){
return -1;
}else {
for(int i = 0; i < size-1; i++) {
index[i] = index[i+1];
}
}
}
这是我得到的。不确定如何继续使用代码。如果有人可以指导我完成,我将不胜感激。谢谢!
您需要替换以下内容:
for(int i = 0; i < size-1; i++) {
index[i] = index[i+1];
}
与:
for(int i = index; i < size-1; i++) {
data[i] = data[i+1];
}
- 从
index
开始循环
index[i]
不会编译。应该是data[i]
吧。
注:
这不会删除最后一个元素。你需要专门检查一下。
到目前为止,您的想法是正确的。我将根据您的语法假设您使用的是数组。您的 get()
方法看起来不错,但您缺少 remove()
方法中的一些代码。
public int remove(int index){
//check for out-of-bounds
if(index < 0 || index >= size) //assumes size is set to the size of the array
{
return -1; }
else
{
for(int i = index; i < size-1; i++){
data[i] = data[i+1]; }
data[size-1] = 0; //assuming the array contains numbers, if not replace '0' with null
}
}
public class MyList<T> {
T[] items = (T[])new Object[10];
public int size() {
int counter=0;
for (int i = 0; i < items.length; i ++) {
if (items[i] != null) {
counter ++;
}
}
return counter;
}
public void remove(int t) {
for (int i = t; i < items.length-1; i++) {
items[i]=items[i+1];
}
items[items.length-1]=null;
items= Arrays.copyOf(items,size());
}
}