问题描述
请说明以下代码,以流方式反转字符串:
public static String reverse(String test) {
return IntStream.range(0,test.length())
.map(i -> test.charat(test.length() - i - 1))
.collect(StringBuilder::new,(sb,c) -> sb.append((char) c),StringBuilder::append)
.toString();
}
解决方法
该方法可以分为5个关键领域:
public static String reverse(String test) {
return IntStream.range(0,test.length())
.map(i -> test.charAt(test.length() - i - 1))
.collect(StringBuilder::new,(sb,c) -> sb.append((char) c),StringBuilder::append)
.toString();
}
在第1行,将String传递到要以相反顺序返回的方法。例如,字符串测试可以等于“世界”
在第2行上,将数字流传递到与传递的String一样长的流中。如果test等于“ world”,则数字流将为0、1、2、3 ,4
在第3行上,数字从存在的字符串的后面映射到数字中。因此,数字0映射到test.length(5)-i(0)-1字符中。因此,数字0被映射到点4处的字符。这等于“ d”。对于其他所有数字都执行此操作,因此0 = d,1 = l,2 = r,3 = o,4 = w。
在第4行上,将创建一个新的Stringbuilder,并将每个字符附加到StringBuilder中,以便在出现字符时将其添加(d-> l-> r-> o-> w)
最后,在第5行,使用toString()方法返回StringBuilder。
结果,字符串“ world”被反转。