我不明白使用流反转字符串的代码

问题描述

请说明以下代码,以流方式反转字符串:

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”被反转。