如何编写删除方法?

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());     
                        
        }
}