Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Set(집합)을 반복 처리하는 방법 완벽 가이드

이 글에서는 Java에서 Set(집합)을 반복(iteration)하여 각 요소에 접근하는 방법을 살펴봅니다. Set은 중복된 요소를 허용하지 않는 컬렉션으로, 수학의 집합 개념을 모델링한 인터페이스입니다.

Set 인터페이스는 Collection 인터페이스로부터 메서드를 상속받으며, 여기에 '중복 요소 금지'라는 제약 조건이 추가됩니다. 대표적인 구현 클래스로는 HashSet, LinkedHashSet, TreeSet 등이 있으며, 이번 예제에서는 가장 널리 사용되는 HashSet을 활용합니다.

예시 입출력

입력값:

입력 집합: [Java, Scala, Mysql, Python]

기대 출력값:

for-each 루프를 사용해 Set 반복:
Java, Scala, Mysql, Python

알고리즘

전체 과정은 다음과 같은 단계로 진행됩니다.

1단계 - 시작
2단계 - 필요한 변수 선언
3단계 - 값 정의
4단계 - 값들로 HashSet을 생성하고, 'add' 메서드로 요소 초기화
5단계 - 콘솔에 HashSet 내용 출력
6단계 - HashSet의 요소들을 순회하며 각 값을 가져오기
7단계 - 결과를 콘솔에 출력
8단계 - 종료

방법 1: for-each 루프 사용

첫 번째 예제는 모든 연산을 main 함수 안에서 함께 처리합니다. Java 5부터 도입된 for-each 루프(확장 for문)는 인덱스 관리 없이 컬렉션의 각 요소를 순서대로 가져올 수 있어 코드가 간결하고 가독성이 뛰어납니다.

import java.util.Set;
import java.util.HashSet;
public class Demo {
   public static void main(String[] args) {
      System.out.println("필요한 패키지가 임포트되었습니다");
      Set<String> input_set = new HashSet<>();
      input_set.add("Java");
      input_set.add("Scala");
      input_set.add("Python");
      input_set.add("Mysql");
      System.out.println("정의된 집합: " + input_set);
      System.out.println("\nfor-each 루프를 사용해 Set 반복:");
      for(String elements : input_set) {
         System.out.print(elements);
         System.out.print(", ");
      }
   }
}

실행 결과

필요한 패키지가 임포트되었습니다
정의된 집합: [Java, Scala, Mysql, Python]

for-each 루프를 사용해 Set 반복:
Java, Scala, Mysql, Python,

방법 2: Iterator 사용 및 객체 지향 구조 적용

두 번째 예제는 연산 로직을 별도의 함수로 분리하여 객체 지향 프로그래밍(OOP) 원칙에 맞게 구성합니다. 반복 로직을 메서드로 캡슐화하면 코드 재사용성이 높아지고 유지보수가 쉬워진다는 장점이 있습니다.

import java.util.Set;
import java.util.HashSet;
public class Demo {
   static void print_set(Set<String> input_set){
      System.out.println("\nfor-each 루프를 사용해 Set 반복:");
      for(String elements : input_set) {
         System.out.print(elements);
         System.out.print(", ");
      }
   }
   public static void main(String[] args) {
      System.out.println("필요한 패키지가 임포트되었습니다");
      Set<String> input_set = new HashSet<>();
      input_set.add("Java");
      input_set.add("Scala");
      input_set.add("Python");
      input_set.add("Mysql");
      System.out.println("정의된 집합: " + input_set);
      print_set(input_set);
   }
}

실행 결과

필요한 패키지가 임포트되었습니다
정의된 집합: [Java, Scala, Mysql, Python]

for-each 루프를 사용해 Set 반복:
Java, Scala, Mysql, Python,

마무리

Set을 반복 처리하는 가장 일반적인 방법은 for-each 루프입니다. 만약 순회 중 특정 요소를 안전하게 삭제해야 한다면 Iteratorremove() 메서드를 사용하는 것이 좋습니다. 또한 HashSet은 요소 순서를 보장하지 않으므로, 삽입 순서나 정렬된 순서가 필요하다면 각각 LinkedHashSet 또는 TreeSet을 사용하는 것을 권장합니다.