Collections 迭代Java列表-如何识别最终元素?

Collections 迭代Java列表-如何识别最终元素?,collections,java-6,Collections,Java 6,例如,我有一份清单 { "in" , "out", "rec", "auth" } 。。。但名单的内容是不可预测的 当迭代列表时,我们如何知道已经到达最后一个元素? 我想对最后一个元素应用不同的逻辑。示例:List List=new ArrayList就是这个列表,您不需要遍历就可以得到最后一个(元素,您可以通过List.get(List.size()-1)获得它,并执行您想要的逻辑。遍历Java列表的“经典”方法是使用List.iterator()获取一个迭代器,然后使用迭代器的方法逐步遍

例如,我有一份清单

{ "in" , "out", "rec", "auth" } 
。。。但名单的内容是不可预测的

当迭代列表时,我们如何知道已经到达最后一个元素?
我想对最后一个元素应用不同的逻辑。

示例:List List=new ArrayList就是这个列表,您不需要遍历就可以得到最后一个(元素,您可以通过List.get(List.size()-1)获得它,并执行您想要的逻辑。

遍历Java
列表的“经典”方法是使用
List.iterator()
获取一个
迭代器
,然后使用
迭代器
的方法逐步遍历列表值

这适用于实现
Iterable
的任何东西,而不仅仅是列表

 // assuming myList implements Iterable<Type>
 Iterator<Type> iterator = myList.iterator();
 while(iterator.hasNext()) {
      doSomethingWith(iterator.next())
 }
您的具体情况-创建列表的逗号分隔字符串表示形式,不带尾随逗号:

 Iterator<String> iterator = myList.iterator();
 StringBuilder buffer = new StringBuilder();
 while(iterator.hasNext()) {
      buf.append(iterator.next());
      if(iterator.hasNext() {
         buf.append(",")
      } 
 }
Iterator Iterator=myList.Iterator();
StringBuilder缓冲区=新的StringBuilder();
while(iterator.hasNext()){
append(iterator.next());
if(iterator.hasNext(){
buf.追加(“,”)
} 
}

所有这一切都假设你想避免使用list .siz().< /p> 你应该考虑使用ARCYLIST的<代码> LIKEDList GETLAST()/<代码>方法。

你应该考虑给出理由。方法,返回最后一个元素。@MarcinSzymczak很有趣。我倾向于避免使用
列表
实现的专门功能,以便可以轻松地将它们替换掉,但在某些情况下,getLast()可能有用。但是,此问题不想请求最后一项。他想知道在迭代到达时如何识别最后一项……当然,您可以使用
l.get(l.size()-1)获取任何非空
列表的最后一项
在迭代列表时,除了最后一个列表元素外,我必须在每个元素后添加逗号。我该怎么做?我已经编辑了您的问题,使其符合我认为您的意思。我不确定您所说的“动态”是什么意思,这可能是错误的单词,但我留了下来以防万一。列表中的值会不同,我们在迭代之前不知道列表中的值是什么。所以我们不能硬编码来检查最后一个元素。我必须迭代列表并在stringbuffer中追加列表值,在列表中的每个字符串对象之后,我必须添加逗号,除了列表中的最后一个字符串对象我不想在stringbuffer中添加逗号。有什么干净的方法可以做到这一点吗?
 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(",")
      } 
 }