java - 特殊套管最后一个元素的最佳循环成语

标签 java loops while-loop idioms

我在执行简单的文本处理和打印语句时经常遇到这种情况,其中我循环一个集合并且我想对最后一个元素进行特殊处理(例如,除了最后一个元素之外,每个普通元素都将用逗号分隔案例)。

是否有一些最佳实践习惯用法或优雅的形式不需要重复代码或在 if、else 循环中插入。

例如,我有一个字符串列表,我想在逗号分隔的列表中打印。 (do while 解决方案已经假定列表有 2 个或更多元素,否则它与更正确的带条件的 for 循环一样糟糕)。

例如List = ("狗", "猫", " bat ")

我想打印“[dog, cat, bat]”

我介绍了两种方法

  1. 带条件的 For 循环

    public static String forLoopConditional(String[] items) {
    
    String itemOutput = "[";
    
    for (int i = 0; i < items.length; i++) {
        // Check if we're not at the last element
        if (i < (items.length - 1)) {
            itemOutput += items[i] + ", ";
        } else {
            // last element
            itemOutput += items[i];
        }
    }
    itemOutput += "]";
    
    return itemOutput;
     }
    
  2. do while 循环启动循环

    public static String doWhileLoopPrime(String[] items) {
    String itemOutput = "[";
    int i = 0;
    
    itemOutput += items[i++];
    if (i < (items.length)) {
        do {
            itemOutput += ", " + items[i++];
        } while (i < items.length);
    }
    itemOutput += "]";
    
    return itemOutput;
    }
    

    测试者类:

    public static void main(String[] args) {
        String[] items = { "dog", "cat", "bat" };
    
        System.out.println(forLoopConditional(items));
        System.out.println(doWhileLoopPrime(items));
    
    }
    

在 Java AbstractCollection 类中,它具有以下实现(有点冗长,因为它包含所有边缘情况错误检查,但还不错)。

public String toString() {
    Iterator<E> i = iterator();
if (! i.hasNext())
    return "[]";

StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
    E e = i.next();
    sb.append(e == this ? "(this Collection)" : e);
    if (! i.hasNext())
    return sb.append(']').toString();
    sb.append(", ");
}
}

最佳答案

我通常是这样写的:

static String commaSeparated(String[] items) {
    StringBuilder sb = new StringBuilder();
    String sep = "";
    for (String item: items) {
        sb.append(sep);
        sb.append(item);
        sep = ",";
    }
    return sb.toString();
}

关于java - 特殊套管最后一个元素的最佳循环成语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105613/

相关文章:

java - 如何使用条目加载 Guava

while-loop - scanf ("%[^\n]",command) 在 while 循环内

C - 数组中的值在离开 while 循环后被覆盖

python - 将 python 中的 while 循环条件重置为 "play the quiz again"

java - 如何将单词的指定最后一个字母匹配并替换为句子中的不同字母

java - 从 Android 应用程序将带有文本的图像发布到 linkedIn

java - 嵌套循环将多维数组转换为 Hashmap

javascript - 我正在尝试使用 onclick 事件在循环内定义一个函数,但它并没有像我预期的那样工作。我应该怎么做?

Python,将数字乘以 2 直到大于 1000 的程序,有语法问题

java - 以分钟为单位计算年数和天数