SW/Groovy

Groovy : Collection 타입 : 개념, 예제, 설명, 방법

얇은생각 2025. 1. 11. 07:30
반응형

Groovy는 Java와 완벽하게 호환되는 유연하고 동적인 언어입니다. 이 포스트에서는 Groovy의 컬렉션에 대해 다룹니다. 컬렉션은 코딩을 더 효율적으로 만드는 중요한 기능입니다. Java나 Python에서 전환하는 경우, 이 가이드는 Groovy의 강력한 컬렉션 기능을 이해하는 데 도움이 될 것입니다.

 

Groovy : Collection 타입 : 개념, 예제, 설명, 방법

 

Groovy에서 컬렉션 정의하기

Java에서 List를 생성할 때 new 연산자를 사용하고 타입을 지정해야 하는 번거로움이 있습니다. 하지만, Groovy에서는 간단히 대괄호를 사용하여 List를 생성할 수 있습니다:

L = [1, 2, 3]

new 연산자를 사용하지 않아도 되며, Python과 유사한 방식으로 값을 대괄호 안에 넣으면 됩니다. 이는 빠른 개발이 필요한 프로젝트에서 특히 유용합니다.

 

컬렉션의 데이터 타입을 확인하려면 다음 코드를 사용하세요:

println L
println L.class

 

이 코드를 실행하면 기본 타입이 ArrayList임을 확인할 수 있습니다. 다른 List 타입을 사용하고 싶다면 다음과 같이 쉽게 변경할 수 있습니다:

L = new LinkedList([1, 2, 3])

 

Groovy 스크립트 실행하기

Groovy 스크립트를 저장한 후, 마우스 오른쪽 버튼을 클릭하고 "Run As Groovy Script"를 선택하여 쉽게 실행할 수 있습니다. 이를 통해 List 요소와 타입을 확인할 수 있습니다.

 

List에 요소 추가하기

Java에서는 .add() 메서드를 사용합니다. Groovy에서는 << (왼쪽 시프트) 연산자를 사용해 간단히 요소를 추가할 수 있습니다:

L << 4
println L

 

이렇게 하면 List에 값 4가 추가되어 [1, 2, 3, 4]가 됩니다. 또한 여러 요소를 한 번에 추가할 수도 있습니다:

L = L + [5, 6, 7]
println L

 

이와 같이 + 연산자를 사용하여 List를 연결할 수 있습니다. 결과는 [1, 2, 3, 4, 5, 6, 7]입니다. 새로운 변수에 저장하려면 다음과 같이 하면 됩니다:

L1 = L + [8, 9]
println L1

 

List에서 요소 제거하기

Groovy에서는 특정 값을 제거하기 위해 - 연산자를 사용할 수 있습니다:

L = L - [3, 5]
println L

이 코드를 실행하면 List에서 35가 제거됩니다.

 

List와 함께 Closure 사용하기

Closure는 Groovy의 강력한 기능 중 하나로, 컬렉션을 우아하게 반복할 수 있습니다. .each 메서드는 Java의 for-each 루프와 유사하지만 더 많은 유연성을 제공합니다:

L.each { println it }

 

it은 List의 현재 요소를 나타냅니다. List를 역순으로 반복하려면 .reverseEach 메서드를 사용할 수 있습니다:

L.reverseEach { println it }

 

Permutations 및 Combinations

Groovy는 Permutations 및 Combinations 같은 고급 작업도 지원합니다. 이는 알고리즘 최적화나 테스트에서 유용할 수 있습니다:

L.permutations().each { println it }

.permutations()를 사용하면 List 요소의 모든 가능한 배열을 반환합니다.

 

Groovy 컬렉션 사용 경험

Java에서 Groovy로 전환하면서 특히 컬렉션을 다룰 때 큰 변화를 느꼈습니다. Groovy의 <<- 연산자를 사용하면 반복적인 코드를 줄일 수 있어 스크립트가 더 간결하고 유지 관리가 쉬워졌습니다. 예를 들어, 암호화폐 거래 쌍을 생성하는 프로젝트에서 .permutations() 메서드를 사용해 Java에서 복잡하게 작성해야 했던 코드를 단순화할 수 있었습니다.

 

Groovy의 오버로드된 연산자 활용하기

Groovy의 또 다른 강력한 기능은 오버로드된 연산자를 사용하는 것입니다. .addAll() 대신 + 또는 += 연산자를 사용해 List를 간단히 확장할 수 있습니다:

L += [10, 11]
println L

이렇게 하면 1011이 기존 List에 추가되고 결과가 L에 재할당됩니다.

반응형