Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java编写remove方法?_Java_Arrays_String - Fatal编程技术网

如何使用java编写remove方法?

如何使用java编写remove方法?,java,arrays,string,Java,Arrays,String,我需要删除该值。 *见插入方法-* @Override public void insertFaculty(Faculty e) { setFaculty(e); list.add(e.getname()); list.add(e.getfid()); list.add(Double.toString(e.getsalary())); System.out.println("\n\nFaculty inserted sucessfu

我需要删除该值。 *见插入方法-*

@Override
public void insertFaculty(Faculty e) {          
    setFaculty(e);

    list.add(e.getname());
    list.add(e.getfid());
    list.add(Double.toString(e.getsalary()));

    System.out.println("\n\nFaculty inserted sucessfully.");    
}
现在我需要删除插入方法中输入的值 *我尝试了删除的方法,但不起作用(⊙_⊙;) *

@覆盖
公共行政学院(e学院){
int i;

对于(i=1;i考虑当你移除
i-1
时,所有东西都会移动1。因此,以前位于
i
的东西现在位于
i-1
。如果你移除该东西,最初位于
i+1
的东西将位于
i-1

因此,您可以删除
i-1
3次:

// Or use a for loop.
list.remove(i-1);
list.remove(i-1);
list.remove(i-1);
或与移除顺序相反:

list.remove(i+1);
list.remove(i);
list.remove(i-1);
或清除子列表:

list.subList(i-1, i+2).clear();
不要忘了将
i
减量1,这样您将在下一次迭代中检查
i
处的“新”内容(如果您只需要找到一个内容,则中断)


综上所述,看起来您正在将不相关类型的相关数据扔到同一个列表中

您也在检查列表中的所有元素,但只有三分之一是id。首先,您可以只检查元素1、4、7等。我不知道id的类型,但通常您可以在“非id位置”(0、2、3、5等)中找到与id相等的值,删除该元素和相邻元素会损坏列表


与其这样做,不如创建一个类来保存你的三个字段。创建一个实例,并将其添加到列表中(或者直接存储你的
Faculty
对象)。

在索引处删除
i
两次和
i-1
一次,将删除
id
salary
name

第一次删除后,索引
i+1
处的元素将是
i
并且将保持
i-1

list.remove(i);
list.remove(i);
list.remove(i - 1);

简单的答案是List.remove将所有元素移回,以填补执行
List.remove(i-1)
时留下的漏洞,因此解决方法是调用List.remove(i-1)三次,而不是使用i-1、i和i+1调用它

但您确实应该将Faculty对象插入列表,而不是单独插入其三个字段。在insertFaculty方法中使用泛型list和list.add(e)。然后在removeFaculty方法中调用list.remove

    @Override
    public void removeFaculty(Faculty e) {          
    setFaculty(e);

    list.remove(e.getname());
    list.remove(e.getfid());
    list.remove(Double.toString(e.getsalary()));
    System.out.println("\n\nFaculty Removed sucessfully.");    
}
您可以使用
remove
方法列表进行删除。您需要传递要删除的元素

最好使用
list
而不是
list

List List=new ArrayList();
希望,这将对您有所帮助。

您的代码中存在不同的逻辑错误:

  • 你的指数不应该增加1,而应该增加3
  • 从列表中删除项目时,不必增加索引
  • 请尝试以下代码:

    @Override
    public void removeFaculty(Faculty e) {
        int i = 1;
    
        while(i<list.size()) {
            System.out.println(list.get(i));
            if(e.fid.equals(list.get(i))) {
                System.out.println("Match found.");
                list.remove(i-1);
                list.remove(i-1);
                list.remove(i-1);
            } else {
                i+=3;
            }
        }
    }
    
    @覆盖
    公共行政学院(e学院){
    int i=1;
    而
    
  • 如果列表中只有3个元素,则列表大小应为3

  • 方法返回列表中指定位置的元素。 但是您没有定义列表的类型。因此不知道返回的类型。我假设类型是
    Object

  • 如果只有一个列表,则无需调用循环

  • 将列表用作
    list
    而不是
    list



  • 为什么要创建这样的列表?为什么不使用列表?在遍历容器时从容器中删除通常是一种不好的做法。典型的方法是确定哪些元素需要在一个循环中删除,然后在第二个循环中删除。将已识别的元素放在另一个容器中。1与2无关,因为id位于elements 1、4、7等。你听说过计算效率吗?;)为什么你确定列表中只有三个元素,方法insertFaculty可能会被多次调用是的。他的代码中有一点混乱。如果他需要这样,他可以使用列表
    List<Faculty> list= new ArrayList<Faculty>();
    
    @Override
    public void removeFaculty(Faculty e) {
        int i = 1;
    
        while(i<list.size()) {
            System.out.println(list.get(i));
            if(e.fid.equals(list.get(i))) {
                System.out.println("Match found.");
                list.remove(i-1);
                list.remove(i-1);
                list.remove(i-1);
            } else {
                i+=3;
            }
        }
    }
    
    @Override 
    public void removeFaculty(Faculty e) {   
              System.out.println(list.get(1));
    
              if(e.fid.equals(list.get(1)) {
    
                  System.out.println("Match found .");
                list.subList(0, list.size()-1).clear();
             }
               else {
                  System.out.println("Not found .");
              }
    
    
                   }