我在做一个简单的文本处理和打印语句时经常遇到这种情况,其中我遍历一个集合,我想对最后一个元素进行特殊情况处理(例如,除最后一种情况外,每个普通元素都将用逗号分隔)。
是否有一些最佳实践习惯用法或优雅的形式,不需要重复代码或在循环中插入if或else。
例如,我有一个要用逗号分隔的列表打印的字符串列表。(“做而做”解决方案已经假定该列表包含2个或更多元素,否则与条件循环更正确一样)。
例如List =(“狗”,“猫”,“蝙蝠”)
我想打印“ [狗,猫,蝙蝠]”
我提出两种方法
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;
}
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活动跟踪等。