KoreaIt Academy/JAVA 예제
Stream을 사용한 예제
728x90
반응형
Stream을 이용하여 다음 예제들을 풀어봅시다.
//1~10까지 ArrayList에 담고 출력하세요.
ArrayList<Integer> datas = new ArrayList<>();
IntStream.range(0, 10).forEach(i -> datas.add(i + 1));
System.out.println(datas);
//1~100까지 중 짝수만 ArrayList에 담고 출력하세요.
ArrayList<Integer> datas = new ArrayList<>();
// IntStream.range(1, 51).forEach(i -> datas.add(i * 2));
// IntStream.range(0, 50).forEach(i -> datas.add(i * 2));
IntStream.range(1, 101).filter(i -> i % 2 == 0).forEach(i -> datas.add(i));
System.out.println(datas);
----------3가지 방법으로 풀어 보았습니다.
//A~F까지 ArrayList에 담고 출력하세요.
ArrayList<Character> datas = new ArrayList<>();
IntStream.range(65, 71).forEach(i -> datas.add((char)i));
//IntStream.range(0, 6).map(i -> i + 65).forEach(i -> datas.add((char)i));
//IntStream.range(0, 6).forEach(i -> datas.add((char)(65 + i)));
System.out.println(datas);
//A~F까지 중 D제외하고 ArrayList에 담은 후 출력하세요.
ArrayList<Character> datas = new ArrayList<>();
IntStream.range(0, 5).map(i -> (i > 2 ? i + 1 : i)).forEach(i -> datas.add((char)(i + 65)));
System.out.println(datas);
//5개의 정수를 입력받은 후 ArrayList에 담고 최대값과 최소값 출력하세요.
ArrayList<Integer> datas = new ArrayList<>(Arrays.asList(10, 20, 50, 30, 40));
///방법 1
System.out.println("최대값 : " + datas.stream().mapToInt(x -> x).max().getAsInt());
System.out.println("최소값 : " + datas.stream().mapToInt(x -> x).min().getAsInt());
///방법 2
List<Integer> maxAndMin = datas.stream().sorted().collect(Collectors.toList());
System.out.println("최대값 : " + maxAndMin.get(maxAndMin.size() - 1));
System.out.println("최소값 : " + maxAndMin.get(0));
//문자열을 5개 입력받고 모두 소문자로 변경하세요.
Scanner sc = new Scanner(System.in);
ArrayList<String> datas = new ArrayList<>();
IntStream.rangeClosed(0, 4).forEach(i -> datas.add(sc.next()));
datas.stream().map(String::toLowerCase).forEach(System.out::println);
//Apple, banana, Melon 중 첫번째 문자가 대문자인 문자열 출력하세요.
ArrayList<String> fruits = new ArrayList<>(Arrays.asList("Apple", "banana", "Melon"));
System.out.println(fruits.stream().filter(fruit -> fruit.charAt(0) >= 65).filter(fruit -> fruit.charAt(0) <= 90).collect(Collectors.joining(", ")));
//※map과 forEach만 사용하면 됩니다.
//한글을 정수로 변경하세요.
String hangle = "공일이삼사오육칠팔구";
Scanner sc = new Scanner(System.in);
System.out.print("입력 : ");
String data = sc.next();
//문자열을 IntStream으로 변경 후 map에서 각 문자에 대한 번호를 indexOf에 전달한다.
//해당 문자에 맞는 값을 hangle에서 찾은 후 해당 인덱스 번호를 가져와 기존의 c의 값을 대체한다.
data.chars().map(c -> hangle.indexOf(c)).forEach(System.out::print);
//정수를 한글로 변경하세요.
//문자열을 IntStream으로 변경 후 map에서 각 문자에 대한 번호에서 48을 빼주어야 사용자가 입력한 정수값이 된다.
//입력한 정수를 hangle의 인덱스번호로 사용하여 해당 문자를 가져온다.
String hangle = "공일이삼사오육칠팔구";
Scanner sc = new Scanner(System.in);
System.out.print("입력 : ");
String data = sc.next();
data.chars().map(c -> c - 48).forEach(c -> System.out.print(hangle.charAt(c)));
728x90
반응형
'KoreaIt Academy > JAVA 예제' 카테고리의 다른 글
멀티 쓰레드와 싱글턴(singleton)을 사용한 빵집 예제 (0) | 2021.07.28 |
---|---|
Encrypt : 암호화 간단한 예제 (0) | 2021.07.22 |
람다식 심화 실습 문제 - 계산기 (0) | 2021.07.22 |
익명클래스와 Adapter을 활용한 옷가게 예제 (0) | 2021.07.20 |
은행 예제 ★★★★★ (0) | 2021.07.20 |
댓글