Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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 获取元素后将其从ArrayList中移除_Java_Arraylist_Collections - Fatal编程技术网

Java 获取元素后将其从ArrayList中移除

Java 获取元素后将其从ArrayList中移除,java,arraylist,collections,Java,Arraylist,Collections,我有一个方法,它获取ArrayList的第一个元素并将其放入另一个ArrayList 假设A={1,2,3}和C={} 在方法getStudent()之后,我的列表现在如下所示: A={1,2,3}和C={1} 有没有一种方法,使用ArrayList,让1在传递给C后立即从列表a中消失 我的代码: public Disk getStudent() { // so it gives me element 0 Student topStudent = studentCollection.g

我有一个方法,它获取ArrayList的第一个元素并将其放入另一个ArrayList

假设A={1,2,3}和C={}

在方法getStudent()之后,我的列表现在如下所示:

A={1,2,3}和C={1}

有没有一种方法,使用ArrayList,让1在传递给C后立即从列表a中消失

我的代码:

public Disk getStudent() {

// so it gives me element 0
    Student topStudent = studentCollection.get(studentCollection.size() - studentCollection.size());
    return topStudent;
}

我知道你可以用stack做类似的事情,但我需要这个特殊的片段作为ArrayList。

使用它来代替
get

另外,请注意,通过从集合本身中减去集合的大小,得到的值为0,因此编写以下内容更简单:

studentCollection.remove(0);

代替
get
,使用

另外,请注意,通过从集合本身中减去集合的大小,得到的值为0,因此编写以下内容更简单:

studentCollection.remove(0);

它是线性发生的吗?如果是这样,您可以分别使用堆栈或队列和pop或dequeue,然后将结果添加到新列表中。否则,您将需要执行三个操作—存储studentCollection中的值,将其从studentCollection中删除,然后将该值添加到新列表中。

它是线性发生的吗?如果是这样,您可以分别使用堆栈或队列和pop或dequeue,然后将结果添加到新列表中。否则,您将需要执行三个操作—存储studentCollection中的值,将其从studentCollection中删除,然后将值添加到新列表中。

如果函数返回一个对象,您可以使用它从ArrayList中删除该元素

yourArrayList.remove(getStudent());

如果函数返回一个对象,可以使用它从ArrayList中删除该元素

yourArrayList.remove(getStudent());

你有两种方法来实现这一点

  • 使用
    List.remove(0)
    在获取元素并将其添加到另一个列表后删除该元素

  • 对列表使用
    队列
    而不是
    列表
    。这样,您就可以执行类似-
    C.add(A.poll())


  • 你有两种方法来实现这一点

  • 使用
    List.remove(0)
    在获取元素并将其添加到另一个列表后删除该元素

  • 对列表使用
    队列
    而不是
    列表
    。这样,您就可以执行类似-
    C.add(A.poll())


  • 您可以定义自定义的get方法,在返回之前从列表中删除元素

    例如:

    public Student getFrstStudentFromList(){
        if(studentCollection.size()!=0){
            Student topStudent = studentCollection.get(0);
            studentCollection.remove(topStudent); // or studentCollection.remove(0);
            return topStudent;
        }
        return null;
    }
    
    另一种方式

    ArrayList<Student> list1 = new ArrayList<>();
    ArrayList<Student> list2 = new ArrayList<>();
    list1.add(new Student("Student 1"));
    list1.add(new Student("Student 2"));
    list1.add(new Student("Student 3"));
    
    moveFrstElementFromList1ToList2(list1,list2);
    
    public static void moveFrstElementFromList1ToList2(ArrayList<Student> l1, ArrayList<Student> l2){
        if(l1.size()!=0){
            l2.add(l1.get(0));
            l1.remove(0);
        }
    }
    
    ArrayList list1=新的ArrayList();
    ArrayList list2=新的ArrayList();
    列表1.添加(新学生(“学生1”));
    列表1.添加(新学生(“学生2”));
    列表1.添加(新学生(“学生3”));
    从列表1列表2(列表1、列表2)移动FRSTELEment2;
    public static void moveFrstElementFromList1ToList2(ArrayList l1,ArrayList l2){
    如果(l1.size()!=0){
    l2.add(l1.get(0));
    l1.移除(0);
    }
    }
    

    我希望这可以帮助您定义自定义get方法,在返回之前从列表中删除元素

    例如:

    public Student getFrstStudentFromList(){
        if(studentCollection.size()!=0){
            Student topStudent = studentCollection.get(0);
            studentCollection.remove(topStudent); // or studentCollection.remove(0);
            return topStudent;
        }
        return null;
    }
    
    另一种方式

    ArrayList<Student> list1 = new ArrayList<>();
    ArrayList<Student> list2 = new ArrayList<>();
    list1.add(new Student("Student 1"));
    list1.add(new Student("Student 2"));
    list1.add(new Student("Student 3"));
    
    moveFrstElementFromList1ToList2(list1,list2);
    
    public static void moveFrstElementFromList1ToList2(ArrayList<Student> l1, ArrayList<Student> l2){
        if(l1.size()!=0){
            l2.add(l1.get(0));
            l1.remove(0);
        }
    }
    
    ArrayList list1=新的ArrayList();
    ArrayList list2=新的ArrayList();
    列表1.添加(新学生(“学生1”));
    列表1.添加(新学生(“学生2”));
    列表1.添加(新学生(“学生3”));
    从列表1列表2(列表1、列表2)移动FRSTELEment2;
    public static void moveFrstElementFromList1ToList2(ArrayList l1,ArrayList l2){
    如果(l1.size()!=0){
    l2.add(l1.get(0));
    l1.移除(0);
    }
    }
    

    我希望这能对你有所帮助

    谢谢,这帮了大忙。@Ahm:不客气。因为你似乎对这些部分不熟悉,当有人满意地回答你的问题而不是在评论中说“谢谢”时。不过还是欢迎你。谢谢,这帮了大忙。@Ahm:不客气。因为你似乎对这些部分不熟悉,当有人满意地回答你的问题而不是在评论中说“谢谢”时。但还是欢迎你。