我有一段代码,在一个类中包含三个方法。第一个使用后两个,我想知道是否可以帮助我删除后两个方法并将其代码合并到第一个方法中。
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;
}
}
``
尝试一下:
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));
}
}