첫 번째로, 반복문을 활용한 방법입니다. `for-each loop`는 컬렉션의 데이터를 순회하기에 간단한 방법입니다. 예를 들어, 정수 목록에서 짝수만 필터링하는 경우 다음과 같이 구현할 수 있습니다.
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = new ArrayList<>();
for (Integer number : numbers) {
if (number % 2 == 0) {
evenNumbers.add(number);
}
}
System.out.println("Even Numbers: " + evenNumbers);
```
두 번째로, `Iterator`를 사용하는 방법입니다. `Iterator`는 컬렉션을 순회하면서 요소를 안전하게 제거할 수 있는 유용한 도구입니다. 위의 예제를 `Iterator`를 사용해 구현해보겠습니다.
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = new ArrayList<>();
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
Integer number = iterator.next();
if (number % 2 == 0) {
evenNumbers.add(number);
}
}
System.out.println("Even Numbers: " + evenNumbers);
```
세 번째로, `Apache Commons`와 같은 외부 라이브러리를 사용하는 방법입니다. 외부 라이브러리를 사용하면 향상된 기능을 활용할 수 있습니다. 예를 들어 `CollectionUtils.filter` 메서드를 사용하여 필터링할 수 있습니다.
```xml
<!-- Maven Dependency -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
```
```java
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Predicate<Integer> evenPredicate = new Predicate<Integer>() {
public boolean evaluate(Integer number) {
return number % 2 == 0;
}
};
CollectionUtils.filter(numbers, evenPredicate);
System.out.println("Even Numbers: " + numbers);
```
이와 같은 방법들을 통해 `Stream API`가 없는 환경에서도 Java 컬렉션을 효과적으로 다룰 수 있습니다. 각 방법은 특정 상황에서 유용하게 사용될 수 있으며, 필요한 경우 복합적으로 활용하여 보다 복잡한 데이터 처리도 가능합니다.