Java - 如何在流中使用函数?

最近,作为我学习的一部分,我们开始用流来练习Java问题解决。虽然用流来解决加/减或字符串/字符排序问题的定量问题,但相对清晰易懂,但是使用流时我不清楚一些更复杂的问题。

例如,给定一组字符,我们必须为范围内的每个字母打印GO /去反转信号,例如A变为Z,字母b变为y。

例如,假设我们有集合'A','k','p' - >在操作之后我们只得到p。

使用简单的函数,我能够解决问题如下:

public static char flipLetter(char c){
    int count = 7;
    if((int)c >= 72 && (int)c <= 78){
        for (int i = 72; i <= 78; i++) {
            if((int)c == i)
                return (char)((int)'Z' - count);
            count++;
        }
    }
    else{
        for (int i = 104; i <= 110; i++) {
            if((int)c == i)
                return (char)((int)'z' - count);
            count++;
        }
    }
    return c;}public static boolean isInRange(char c){
    return (((int)c >= 72 && (int)c <= 78) || ((int)c >= 104 && (int)c <= 110));}public static void inRange(char arr[]){
    for (int i = 0; i < arr.length; i++) {
        if(isInRange(arr[i])){
            System.out.print(flipLetter(arr[i])+" ");
        }
    }}

我很乐意获得有关如何使用我编写的代码来实现流程或听取其他评论的帮助。


MYYA
浏览 523回答 3
3回答

慕尼黑8549860

你可以这样做:public&nbsp;static&nbsp;void&nbsp;inRange(char&nbsp;arr[]){ &nbsp;&nbsp;&nbsp;&nbsp;IntStream.range(0,&nbsp;arr.length).mapToObj(i&nbsp;->&nbsp;arr[i]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(letter&nbsp;->&nbsp;isInRange(letter)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(letter&nbsp;->&nbsp;flipLetter(letter)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.forEach(e&nbsp;->&nbsp;System.out.print(e&nbsp;&nbsp;+&nbsp;"&nbsp;"));}这将创造一个Stream对的Array传递,过滤掉任何不在范围内,调用flipLetter上每个字母的方法,然后打印出每个
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java