더북(TheBook)

2.5 순회하며 계산 집약적 연산하지 않기

class Inventory {

    private List<Supply> supplies = new ArrayList<>();

    List<Supply> find(String regex) {
        List<Supply> result = new LinkedList<>();
        for (Supply supply : supplies) {
            if (Pattern.matches(regex, supply.toString())) { 
                result.add(supply);
            } 
        }
        return result;
    } 
}

자료 구조를 순회할 때는 수행할 연산 유형에 주의해야 합니다. 계산 집약적 연산을 수행하면 성능 위험이 쉽게 초래될 수 있거든요. 위 코드는 정규식으로 Supply 객체를 찾는 find() 메서드의 전형적인 예입니다.

자바를 비롯해 다양한 프로그래밍 언어에서는 정규식(regular expression), 짧게 줄여 regex로 쿼리 문자열을 만듭니다. 정규식이 있으면 거대한 텍스트 데이터 집합에 효율적으로 질의할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.