增强了循环快捷方式

时间:2013-05-11 19:26:42

标签: java arrays for-loop

以下版本的 for loop 是否可行(或其变体是否符合缩短一行代码的目的)?

for(String string: stringArray; string.toLowerCase()){
//stuff
 }

而不是

for(String string: stringArray){
  string = string.toLowerCase();
  //stuff

 }

看起来似乎是一个愚蠢的问题,但是当它应用于循环的每个元素时,一行总是很难写。

5 个答案:

答案 0 :(得分:4)

像这样写

for(String string: stringArray)string=string.toLowerCase();

这同样短。同样在正常for循环for(int i=0;i<40;i++)中,您可以使用逗号运算符将所有内容保存在一行

答案 1 :(得分:0)

不幸的是,这是不可能的。你可以看看Google Guava,它有类似的东西(Predicates / Closures),但它对改进你的代码没什么帮助。

完全可能是offtopic,但它可能会有所帮助,如果您使用与Java完全兼容的Groovy,它将类似于:

String[] stringArray = ["Lower", "Case"] as String[]

stringArray.collect { it.toLowerCase() }.each { item ->
    println item
}

哪个会打印:

  • 情况下

但是,就像我说的那样,在你的情况下,这可能不是一个可行的选择。

答案 2 :(得分:0)

不,没有。

增强for循环的技巧是它的行为与集合上的任何其他循环一样 - 您一次使用单个元素一个,而不是一次完成。

此外,由于toLowerCase()会返回一个新的String,它应该只在绝对需要的情况下调用,而不是为此创建一个新变量(除非你需要它)在更多地方,在这种情况下,最好将小写功能移到这些方法中。)

答案 3 :(得分:0)

您应该考虑将代码重构为多个方法,每个方法都有自己的循环。一种方法使用原始列表中的变换元素创建一个新数组(或列表)(例如将toLowerCase()应用于数组中的字符串)。其他方法处理新数组而不是原始数组。

答案 4 :(得分:0)

我认为现在不可能。 :)