我有一个列表例如
{ "in" , "out", "rec", "auth" }
...但是列表的内容是不可预测的。
当迭代列表列表时,我们怎么知道我们已经到达最后一个元素? 我想为最后一个元素应用不同的逻辑。
答案 0 :(得分:0)
示例:List list = new ArrayList是列表,您不需要遍历获取最后一个(元素,您可以通过list.get(list.size() - 1获取它)并执行您想要的逻辑。 / p>
答案 1 :(得分:0)
迭代Java List
的“经典”方法是使用List.iterator()
获取Iterator
,然后使用Iterator
的方法逐步完成列出值。
这适用于任何实现Iterable
的内容,而不仅仅是列表。
// assuming myList implements Iterable<Type>
Iterator<Type> iterator = myList.iterator();
while(iterator.hasNext()) {
doSomethingWith(iterator.next())
}
从JDK 1.5开始,语言中就有了一个快捷方式来实现同样的目标:
// assuming myList implements Iterable<Type>
for(Type item : myList) {
doSomethingWith(item);
}
但是,虽然在许多情况下都很方便,但这种语法并不能让您完全访问Iterator
所拥有的所有信息。
如果要特别处理列表的最后一个元素,可以使用以下方法之一:
Iterator<Type> iterator = myList.iterator();
while(iterator.hasNext()) {
Type item = iterator.next();
if(iterator.hasNext() {
doSomethingWith(item);
} else {
// last item
doSomethingElseWith(item);
}
}
您的具体情况 - 创建列表的逗号分隔字符串表示形式,不带尾随逗号:
Iterator<String> iterator = myList.iterator();
StringBuilder buffer = new StringBuilder();
while(iterator.hasNext()) {
buf.append(iterator.next());
if(iterator.hasNext() {
buf.append(",")
}
}
所有这些都假设您有理由避免使用list.size()。
答案 2 :(得分:0)
您应该考虑使用LinkedList
而不是ArrayList。它有getLast()
方法。