当前位置: 首页 > 面试题库 >

最佳循环成语,用于特殊外壳的最后一个元素

宰父阳焱
2023-03-14
问题内容

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

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

例如,我有一个要用逗号分隔的列表打印的字符串列表。(“做而做”解决方案已经假定该列表包含2个或更多元素,否则与条件循环更正确一样)。

例如List =(“狗”,“猫”,“蝙蝠”)

我想打印“ [狗,猫,蝙蝠]”

我提出两种方法

  1. 有条件的循环
        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;
     }
  1. 在循环启动循环时执行
        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(", ");
    }
    }

问题答案:

这些答案中有很多for循环,但是我发现Iterator和while循环更容易读取。例如:

    Iterator<String> itemIterator = Arrays.asList(items).iterator();
    if (itemIterator.hasNext()) {
      // special-case first item.  in this case, no comma
      while (itemIterator.hasNext()) {
        // process the rest
      }
    }

这是Joiner在Google馆藏中采用的方法,我发现它非常易读。



 类似资料:
  • 问题内容: 在对象上执行“ foreach”时,我想对上一次循环迭代做一些不同的事情。我正在使用Ruby,但对于C#,Java等也是如此。 所需的输出等效于: 显而易见的解决方法是使用将代码迁移到for循环,但是for每个解决方案都感觉更优雅。在循环中编码特殊情况的最优雅方式是什么?可以用foreach完成吗? 问题答案: 如何先获取对 最后一项* 的 引用 ,然后在foreach循环中将其用于比

  • 我不明白为什么ArrayList的ArrayList中的“alofCompoundedPrimean”中的每个元素最后都是相同的。因此,尽管ArrayList“TheNewPrimeFactorSal”看起来是正确的,但for循环的每次迭代似乎都将AlofCompoundedPrimean的所有元素更改为最新迭代的元素;也就是说,AlofCompoundedPrimean不是索引唯一的元素,而是将

  • 我的用户可以将条目添加到滚动列表的底部。但是,滚动条在添加条目时不会自动下移,因此用户看不到他们新添加的条目。我如何保持我的滚动条总是在最向下滚动的位置,以显示最新的条目(使用角度5)?

  • 为什么我只得到while循环外数组的最后一个元素?如何在循环之外获取数组中的所有元素?

  • 我的程序中有一个错误,使我的循环只读取输入字符串的最后一部分。我想让程序计算一个字符串中每个字符的个数。我不想要答案告诉我如何更有效地存储这些值,而不重复所有内容26次。请回答我在这里提出的问题。抱歉,如果这是一个副本!我只是不知道该说明什么,因为没有明显的错误。

  • 本文向大家介绍说明Kafka的一个最佳特征。相关面试题,主要包含被问及说明Kafka的一个最佳特征。时的应答技巧和注意事项,需要的朋友参考一下 答:Kafka的最佳特性是“各种各样的用例”。 这意味着Kafka能够管理各种各样的用例,这些用例对于数据湖来说非常常见。例如日志聚合、Web活动跟踪等。