如何判断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
相关产品推荐
相关产品推荐

