如何检测一个元素是否是数组中的最后一个元素?

485*_*104 3 java arrays foreach loops arraylist

下面的代码根据它的位置拆分一个字符串,然后将它放入一个 ArrayList。

因此,例如,如果 String 是"Who Framed Roger Rabbit?",则将fragmentMessage在每 8 个字符处拆分消息。

因此 ArrayList 将如下所示: [Who Fram, ed Roger, Rabbit?]

ArrayList 的元素如下:

  1. 数组列表元素 0: Who Fram
  2. ArrayList 元素 1: ed Roger
  3. ArrayList 元素 2: Rabbit?

然后我在主要方法中有一个 for-each 循环,它迭代 ArrayList。

迭代时如何检测是否已到达数组的最后一个元素?

例如,“如果这是数组的最后一个元素,则打印“LAST ELEMENT ”。

import java.util.ArrayList;
import java.util.List;

public class LastElement {

public static void main(String[] args) {

    String message = "Who Framed Roger Rabbit?";
    for (String fragment : fragmentMessage(message)) {
        /*
         * If "fragment" is the last element of the array, then do something
         */
    }
}

private static List<String> fragmentMessage(String message) {
    List<String> fragmentedMessage = new ArrayList<>();

    for (int i = 0; i < message.length(); i = i + 8) {
        fragmentedMessage.add(message.substring(i, i + 8));
        System.out.println(fragmentedMessage);
    }

    return fragmentedMessage;
}
}
Run Code Online (Sandbox Code Playgroud)

k5_*_*k5_ 5

没有直接的方法可以知道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) {

        }
    }
Run Code Online (Sandbox Code Playgroud)

另一种选择是 Iterator

    for (Iterator<String> iterator = fragmentMessage(message).iterator();
        iterator.hasNext();) {
        String fragment = iterator.next();
        if (!iterator.hasNext()) {

        }
    }
Run Code Online (Sandbox Code Playgroud)


Zep*_*hyr 5

你有几个选择。

使用迭代器:

    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!");
        }
    }
Run Code Online (Sandbox Code Playgroud)

检查 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!");
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用此方法,如果您在列表中使用字符串,请注意,如果存在重复项,则结果不会很准确。

使用标准 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!");
        }
    }
Run Code Online (Sandbox Code Playgroud)