You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断ArrayList的下一个元素是否存在?2D ArrayList格式化打印

二维ArrayList按行打印(元素逗号分隔,最后一个元素无逗号)

方法1:基于索引判断(适配你现有代码)

直接在if(???)的位置填入j < lists.get(i).size() - 1即可。核心逻辑是:当前元素的索引j如果小于子列表长度减1,说明后面还有元素,就添加逗号;否则就是最后一个元素,直接打印。

可以优化代码,提前取出当前子列表,避免重复调用lists.get(i),让代码更清晰:

List<List<String>> lists = new ArrayList<>();

List<String> bakeryList = new ArrayList<>();
bakeryList.add("Pasta");
bakeryList.add("Garlic bread");
bakeryList.add("Donuts");

List<String> produceList = new ArrayList<>();
produceList.add("Tomatoes");
produceList.add("Zucchini");
produceList.add("Onions");

List<String> drinkList = new ArrayList<>();
drinkList.add("Soda");
drinkList.add("Water");

lists.add(bakeryList);
lists.add(produceList);
lists.add(drinkList);

for (int i = 0; i < lists.size(); i++) {
    List<String> currentList = lists.get(i); // 提前取出当前子列表
    for (int j = 0; j < currentList.size(); j++) {
        if (j < currentList.size() - 1) { // 判断是否为非最后一个元素
            System.out.print(currentList.get(j) + ", ");
        } else {
            System.out.print(currentList.get(j));
        }
    }
    System.out.println();
}

方法2:用String.join简化代码(Java 8+)

Java 8及以上提供了String.join()工具方法,能直接将列表元素用指定分隔符拼接,底层已处理好最后一个元素不加分隔符的逻辑,一行代码就能完成每行打印:

for (List<String> currentList : lists) {
    System.out.println(String.join(", ", currentList));
}

这种方式最简洁高效,优先推荐使用。

方法3:迭代器判断是否有下一个元素

用迭代器遍历子列表,通过iterator.hasNext()判断当前元素之后是否还有元素,有则加逗号,无则直接打印:

for (List<String> currentList : lists) {
    Iterator<String> iterator = currentList.iterator();
    while (iterator.hasNext()) {
        String element = iterator.next();
        if (iterator.hasNext()) {
            System.out.print(element + ", ");
        } else {
            System.out.print(element);
        }
    }
    System.out.println();
}

内容的提问来源于stack exchange,提问作者Mihailo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:43:17