我想迭代字符串的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)]
答案 0 :(得分:9)
您可以使用list.subList(0,list.size()-1)
获取没有最后一个元素的List视图。
List<E>
java.util.List.subList(int fromIndex,int toIndex)返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图。 (如果fromIndex和toIndex相等,则返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
答案 1 :(得分:3)
Java中的列表有sublist method。
subList(int fromIndex,int toIndex)返回部分视图 此列表在指定的fromIndex(包含)和toIndex之间, 排他性的。
List<String> sub = yourList.subList(0, yourList.size()-1);
答案 2 :(得分: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包含列表的所有元素,除了last。
答案 3 :(得分:1)
在Java 8中:
IntStream.range(0, list.size() - 1).forEach(i -> System.out.println(list.get(i)));
文档:https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html
答案 4 :(得分:0)
还有另一种选择。
您可以使用迭代器排除元素:
List<String> list = new ArrayList<>();
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();
}
}
这样,不需要其他列表。
答案 5 :(得分: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);
}
}