从ArrayList中排除元素

Edw*_*ard 2 java iterator arraylist

我想迭代字符串的ArrayList:

List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
Run Code Online (Sandbox Code Playgroud)

而不是迭代所有项目:

for(String a : list) {
  System.out.println(a);
}
Run Code Online (Sandbox Code Playgroud)

我想排除列表的最后一个元素.目前我使用:

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

但我想知道,如果有一个较短的形式.例如在R中,您可以简单地生成没有最后一个元素的列表:

a = c("A", "B", "C")
a[-length(a)]
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 9

您可以使用list.subList(0,list.size()-1)获取List的视图而不使用最后一个元素.

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

返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图.(如果fromIndex和toIndex相等,则返回的列表为空.)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然.返回的列表支持此列表支持的所有可选列表操作.

  • 正如Eran所说,始终注意`subList`返回lis的'视图'.因此,将反映对列表的任何更改.如果要创建副本,请将其提供给列表的构造函数:`new ArrayList <>(list.subList(0,list.size() - 1))` (4认同)