如何在Java中合并方法

问题描述 投票:0回答:1

我有一段代码,在一个类中包含三个方法。第一个使用后两个,我想知道是否可以帮助我删除后两个方法并将其代码合并到第一个方法中。

import java.util.ArrayList;

public class Shifting {

    public static ArrayList<String> shiftLines(ArrayList<ArrayList<String>> words) {
        ArrayList<String> shifted = new ArrayList<String>();

        for (ArrayList<String> line : words) {
            for (int i = 0; i < line.size(); i++) {
                shifted.add(generateStringFromList(line));
                line = shiftOnce(line);
            }
        }

        return shifted;
    }

    public static ArrayList<String> shiftOnce(ArrayList<String> listValues) {

        String temp = listValues.get(0);
        listValues.remove(0);
        listValues.add(temp);
        return listValues;
    }

    public static String generateStringFromList(ArrayList<String> listToJoin) {
        String st = "";
        for (String string : listToJoin) {
            st += string + " ";
        }
        return st;
    }

}

``
java eclipse
1个回答
0
投票

尝试一下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.StringJoiner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Shifting {

    public static ArrayList<String> shiftLines(final ArrayList<ArrayList<String>> words) {

        return  words.stream().flatMap(line -> 
            IntStream.range(0, line.size()).mapToObj(i -> {

                final StringJoiner join = new StringJoiner(" ",""," ");

                line.forEach(singleLine -> {
                    join.add(singleLine);
                });
                Collections.rotate(line, -1);

                return join.toString();
            })
        ).collect(Collectors.toCollection(ArrayList::new));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.