以下版本的 for loop 是否可行(或其变体是否符合缩短一行代码的目的)?
for(String string: stringArray; string.toLowerCase()){
//stuff
}
而不是
for(String string: stringArray){
string = string.toLowerCase();
//stuff
}
看起来似乎是一个愚蠢的问题,但是当它应用于循环的每个元素时,一行总是很难写。
答案 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)
我认为现在不可能。 :)