3 回答
TA贡献1810条经验 获得超4个赞
没有直接的方法可以知道List在 foreach 循环中是否有 a 的最后一个条目。
最简单的方法是使用索引循环。
类似的东西:
List<String> fragmentMessage = fragmentMessage(message);
for (int i = 0; i < fragmentMessage.size(); i++) {
String fragment = fragmentMessage.get(i);
/*
* If "fragment" is the last element of the array, then do something
*/
if (i == fragmentMessage.size()-1) {
}
}
另一种选择是 Iterator
for (Iterator<String> iterator = fragmentMessage(message).iterator();
iterator.hasNext();) {
String fragment = iterator.next();
if (!iterator.hasNext()) {
}
}
TA贡献1817条经验 获得超6个赞
你有几个选择。
使用迭代器:
String message = "Who Framed Roger Rabbit?";
List<String> fragments = fragmentMessage(message);
Iterator<String> iterator = fragments.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
if (!iterator.hasNext()) {
System.out.println("All done!");
}
}
检查 for/each 循环中的索引:
for (String str :
fragments) {
System.out.println(str);
// If this item is the last in the list
if (fragments.indexOf(str) == fragments.size() - 1) {
System.out.println("All done!");
}
}
使用这种方法,如果您在列表中使用字符串,请注意,如果有重复项,这将不会很准确。
使用标准 for 循环跟踪索引:
for (int i = 0; i < fragments.size(); i++) {
System.out.println(fragments.get(i));
if (i == fragments.size() - 1) {
System.out.println("All done!");
}
}
TA贡献1765条经验 获得超5个赞
我的最终解决方案如下所示。它基于@k5_答案,归功于他/她/其他人。
我使用 if-else 语句仅针对最后一个元素。
List<String> fragmentMessage = fragmentMessage(message);
for (int i = 0; i < fragmentMessage.size(); i++) {
String fragment = fragmentMessage.get(i);
if (message.isEmpty()) { // Only if message == "".
System.out.println(createFrame(message));
} else if (i == fragmentMessage.size() - 1) { // Last element of the array.
System.out.println(createLastFrame(fragment));
} else {
System.out.println(createFrame(fragment)); // Only if message is not the last message.
}
}
添加回答
举报