2016-11-24 108 views
0

我有一種方法,它接受ArrayList的第一個元素並將其放入另一個ArrayList中。獲取後從ArrayList中刪除元素

比方說,A = {1,2,3},C = {}

方法getStudent()我的名單現在這個樣子之後:

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

有沒有一種方法,使用ArrayLists,讓1從列表A中消失,只要它傳遞給C?

我的代碼:

public Disk getStudent() { 

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

我知道你可以做這樣的事情與堆棧,但我需要這個特殊的一塊是一個ArrayList。

回答

2

代替get,使用remove

另外,還要注意從自身減去集合的大小,你得到0,所以這是簡單的寫:

studentCollection.remove(0); 
+0

謝謝,這幫助了很多。 – Ahm

+0

@Ahm:不客氣。當某人滿意地回答你的問題而不是在評論中說「謝謝」時,你似乎對這些部分有新的看法,[這就是你應該做的](http://stackoverflow.com/help/someone-answers)。但你仍然歡迎。 – Makoto

1

是否線性發生?如果是這樣,你可以分別使用一個堆棧或一個隊列並彈出或退出,然後將結果添加到新列表中。否則,您將需要執行三個操作 - 存儲來自studentCollection的值,將其從studentCollection中移除,然後將該值添加到新列表中。

0

如果你的函數返回一個對象,你可以用它來從ArrayList中

yourArrayList.remove(getStudent()); 
0

有兩種方法來實現這個

  1. 使用List.remove(0)後刪除元素刪除元素獲取它並將其添加到另一個列表中。

  2. 使用queue而不是list作爲列表。你可以這樣做 - C.add(A.poll())

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

我希望這可以幫助你