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로 쿼리 문자열을 만듭니다. 정규식이 있으면 거대한 텍스트 데이터 집합에 효율적으로 질의할 수 있습니다.