문제
내가 작성한 정답
char
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(char c : a.toCharArray()){
System.out.println(c);
}
}
}
charAt
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(int i=0; i<a.length(); i++){
System.out.println(a.charAt(i));
}
}
}
String
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String[] aa = a.split("");
for(String s : aa){
System.out.println(s);
}
}
}
다른 사람들의 정답
forEach - String
import java.util.*;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
Arrays.stream(a.split("")).forEach(System.out::println);
}
}
forEach - char
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
// a.chars()는 IntStream을 반환하기 때문에 (char)로 변환하지 않으면 숫자로 출력된다
a.chars().forEach(c->System.out.println((char)c));
//그래서 이렇게 해도 됨
a.chars().mapToObj(i->(char)i).forEach(System.out::println);
}
}
forEach
- 반복 작업 수행: 컬렉션 또는 스트림의 각 요소에 대해 주어진 작업을 한 번씩 실행
- 순차적 처리: 요소들을 순서대로 처리 (스트림의 경우 병렬 스트림이 아니라면).
- 사이드 이펙트 중심: forEach는 주로 컬렉션 또는 스트림의 요소를 변경하거나, 외부 상태를 변경하는 등의 사이드 이펙트를 발생시키는 데 사용. 값을 반환하거나 새로운 컬렉션을 생성하는 데는 적합하지 않다.
- 인수: : forEach 메서드는 java.util.function.Consumer 인터페이스를 구현한 함수형 인터페이스를 인수로 받는다. Consumer는 한 개의 입력을 받아서 아무 값도 반환하지 않는 함수를 나타낸다.
- 반환 값 : forEach 메서드는 아무 값도 반환하지 않는다 (void 타입).
- 종료 연산 : 스트림에서 forEach는 종료 연산(terminal operation)에 해당한다. 따라서 forEach가 호출되면 스트림 파이프라인이 실행되고 결과가 처리된다.
Share article