我有一个列表,例如
{ "in" , "out", "rec", "auth" }
但是列表的内容是不可预测的。
当迭代列表列表时,我们如何知道我们已经到达了最后一个元素?我想对最后一个元素应用不同的逻辑。
示例:List List=new ArrayList是列表,您不需要遍历来获取最后一个(元素,您可以通过List.get(List.size()-1)来获取它,并执行您想要的逻辑。
迭代Java List
的"经典"方法是使用List.iterator()
获得Iterator
,然后使用Iterator
的方法逐步遍历列表值。
这适用于任何实现Iterable
的东西,而不仅仅是Lists。
// assuming myList implements Iterable<Type>
Iterator<Type> iterator = myList.iterator();
while(iterator.hasNext()) {
doSomethingWith(iterator.next())
}
自JDK1.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().
您应该考虑使用ArrayList的LinkedList
instad。采用getLast()
方法。