2차원 배열을 아래와 같이 출력해야 할 때 어떤 코드가 좋을까
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println("");
}
각 값을마다 띄어쓰기 붙이고
1줄 끝날때마다 개행 추가도 해주는 코드이다
자 우선
for문 한문장 없애기 위해 Arrays.toString()을 사용해봤다
for (int i = 0; i < arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
문제없이 잘 나가지만
[] 괄호도 같이 출력이 되어 다른 방법을 모색을 해서 좀더 나은 방법을 찾았다
stream(). floatMap(). forEach()을 사용하는 것이다.
위 방식으로 바뀐 내코드를 보자
Before:
public void print(){
for(int i=0;i<5;i++){
System.out.println("");
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println("");
}
}
After:
public void print() {
System.out.print("\n".repeat(5));
stream(arr).flatMap(this::newLineStream).forEach(System.out::print);
}
public <T> Stream<T> newLineStream(T[] array){
System.out.print("\n");
return stream(array, 0, array.length);
}
Before 보단 After 코드가 더 예쁘지 않나 싶다.
추가적으로
newLIneStream 코드는 Arrays.stream() 를 참고해 만들었다.
GitHub - oiNeh/code-kata: 코드카타
코드카타. Contribute to oiNeh/code-kata development by creating an account on GitHub.
github.com