2015-11-19 167 views
2

我想遍歷字符串的ArrayList:排除元素從ArrayList中

List<String> list = new ArrayList<String>(); 
list.add("A"); 
list.add("B"); 
list.add("C"); 

而是迭代的所有條目:

for(String a : list) { 
    System.out.println(a); 
} 

我想排除的最後一個元素列表。目前我使用:

for(int i = 0; i < list.size()-1; i++) { 
    System.out.println(list.get(i)); 
} 

但我想知道,如果有一個較短的形式。例如,在R您可以簡單地生成一個列表,而最後一個元素:

a = c("A", "B", "C") 
a[-length(a)] 
+1

問題是什麼? – Shivam

+0

>但我想知道,如果有一個較短的形式。 – Edward

+0

你得到了很多答案@Edward – Shivam

回答

9

你可以使用list.subList(0,list.size()-1)來獲取列表的視圖沒有最後一個元素。

List<E> java.util.List.subList(INT的fromIndex,INT toIndex)

返回指定fromIndex(包括)元素範圍爲排他性之間此列表的所述部分的視圖。 (如果fromIndex和toIndex相等,則返回的列表爲空。)返回的列表由此列表支持,因此返回列表中的非結構化更改將反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可選列表操作。

+3

總是要注意'subList'返回lis的'view',就像Eran所說的那樣。所以對列表的任何更改都會反映出來。如果你想創建一個副本,然後將其提供給列表的構造函數:'new ArrayList <>(list.subList(0,list.size() - 1))' – Thirler

3

Java中的列表有一個sublist method

子列表(INT的fromIndex,INT toIndex)返回的 指定fromIndex(包括)元素範圍爲 獨家之間該列表的部分的圖。

List<String> sub = yourList.subList(0, yourList.size()-1); 
+0

@AndyTurner我的錯誤,Thnsk很多! !::) –

1
List<String> list = new ArrayList<String>(); 
    list.add("A"); 
    list.add("B"); 
    list.add("C"); 

    List<String> newList = new ArrayList<String>(list); 
    newList.remove(newList.size()-1); 

現在,newList是有除最後一個列表中的所有元素。

0

還有另一種選擇。 您可以用iterator排除元素:

List<String> list = new ArrayList<String>(); 
      list.add("A"); 
      list.add("B"); 
      list.add("C"); 

Iterator<String> iterator = list.iterator(); 
while(iterator.hasNext()){ 
    String i = iterator.next(); 
    if(isRemovable(i)){ //your condition to remove item here 
     iterator.remove(); 
    } 
} 

這種方式,不需要其他列表。

+0

這比原始問題中的for循環短嗎? – BateTech

0

也嘗試這種反應

public static void main(String[] args) { 
    List<String> list = new ArrayList<String>(); 
    list.add("A"); 
    list.add("B"); 
    list.add("C"); 


     System.out.println("the tetter to be deleted"+list.get(list.size()-1)); 

     list.remove(list.size()-1); 
     for(String a : list) { 
      System.out.println(a); 
     } 

}