【问题标题】:How to write a remove method?如何编写删除方法?
【发布时间】:2016-05-28 10:17:49
【问题描述】:

编写一个名为 get 的方法,它将从给定索引返回一个元素。如果索引超出范围,则返回 -1。

编写一个名为 remove 的方法,该方法将从给定索引中删除一个元素。如果索引超出范围,则返回 -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];
        }
    }

}

这是我所知道的。不知道如何继续使用代码。如果有人可以指导我完成,我将不胜感激。谢谢!

【问题讨论】:

  • 您需要发布您正在操作的数据结构的代码。
  • index[i]?? index 不是您方法的整数参数而不是数组吗?
  • index[i] 应该是一个数组而不是一个变量 int

标签: java if-statement for-loop methods remove-method


【解决方案1】:

到目前为止,您的想法是正确的。我将根据您的语法假设您使用的是数组。您的 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
    }
}

【讨论】:

    【解决方案2】:

    您需要替换以下内容:

        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]

    注意:
    这不会删除最后一个元素。你需要专门检查一下。

    【讨论】:

    • 另外,最后一个元素应该设置为null以避免内存泄漏。
    【解决方案3】:
    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());     
                            
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2022-09-30
      • 2012-12-31
      • 1970-01-01
      相关资源
      最近更新 更多