멍발자의 개발

문자열 조건 세기와 스트림 본문

STUDY/Java

문자열 조건 세기와 스트림

개발하는 멍발자 2022. 4. 19. 15:22

1. 5자리 문자열 표시

import java.util.ArrayList;
import java.util.List;

public class ForEachArraySample2 {
    public static void main(String[] args) {
        var data = List.of("apple", "orange", "watermelon");

        var result = new ArrayList<String>();
        for (String s: data) {
            if(s.length() >= 5) {
                result.add(s);
            }
        }
        System.out.println(result);
    }
}

 

2. 5자리 문자열의 개수

import java.util.ArrayList;
import java.util.List;

public class ForEachArraySample3 {
    public static void main(String[] args) {

        var data = List.of("apple", "orange", "watermelon");
        var result = 0;
        for(String s: data) {
            if(s.length() >= 5) {
                result++;
            }
        }
        System.out.println(result);
    }
}

 

3. p가 포함된 5자리 문자열

for(String s: data) {
    if(s.length() >= 5){
        if(s.contains("p")) {
            System.out.println("p포함");

 

4. p가 포함된 6자리 문자열

import java.util.ArrayList;
import java.util.List;

public class ForEachArraySample3 {
    public static void main(String[] args) {

        var data = List.of("apple", "orange", "watermelon");
      /*
        var result = 0;
        for(String s: data) {
            if(s.length() >= 5) {
                result++;
                *
       */
        /*
        for(String s: data) {
            if(s.length() >= 5){
                if(s.contains("p")) {
                    System.out.println("p포함");
    }
}

        }
         */
    for(String s: data) {
        if(s.length() >=7) {
            if(s.contains("w")) {
                System.out.println(s.toString());
                System.out.println("p포함");
            }
        }
    }
    }
}

<스트림>

var result = (int) data.stream() //Stream 소스
 .filter(s -> s.length() >= 5) // 중간처리 (값 조작)
 .count(); // 종단 처리 (값 정리)

 

 

jshell> var names = List.of("James", "Britney", "Sage")
names ==> [James, Britney, Sage]

jshell> names.stream().toList()
$2 ==> [James, Britney, Sage]

jshell> var strArray = new String[]{"test","hello","world"}
strArray ==> String[3] { "test", "hello", "world" }

jshell> Arrays.stream(strArray).toList()
$4 ==> [test, hello, world]

jshell> Stream.of(strArray).toList() //요즘은 여기가 더 많이 사용함.
$5 ==> [test, hello, world]

<종단 처리>

 

스트림 처리로부터 최종 결과를 추출하는 것이 종단 처리다.

새로운 List > collect(Collectors.toCollection(ArrayList::new))

갯수를 셈 > count()

 

allMatch(조건)메소드 = 모든 요소가 조건에 맞는 경우

anyMatch(조건)메소드 = 설정 조건 중 하나라도 맞으면 true

noneMatch(조건)메소드 = 설정 조건 중 모두 맞지 않으면 true

 

Collectors

jshell>  names.stream().collect(Collectors.toList())
$15 ==> [James, Britney, Sage]

 

forEach문

결과를 하나씩 출력하는 예제

forEach(System.out::println)

<중간 처리>

 

스트림에 흐르는 값을 변환하거나 폐기를 선택한다.

람다식으로 전달한 조건이 true인 값만 처리한다.

 

map 메소드: 값을 처리할 때

skip 메소드: 일부 요소를 건너뛰고 처리를 시작할 때

limit 메소드: 처리할 요소수를 제한할 때

Sorted메소드: 요소를 정렬할 때

 

<람다식>

 

.filter(s-> s.length() >=

 받는 값을 사용하는 변수 -> 처리

 

 

 

 

Comments