개발 용어/Spring

Spring에서 Set이란?

디벨로퍼룽쓰 2021. 5. 2. 23:08

** 스프링에서 Set을 구현해보자! **

 

우리가 흔히 사용하는 List와 Set은 어떤 차이점이 있을까?

List는 값의 중복 저장이 가능하고, 배열 안의 순서가 있다.
Set은 값의 중복 저장이 불가능하고, 배열 안의 순서가 없다. 

즉, Set은 복주머니 안에 들어있는 동전이라고 생각하면 좋다!

Set은 중복 값 저장이 불가능하고, 값의 순서가 없다.

우리가 마구잡이로 숫자를 담아서 주머니 안에 넣어두면 그 숫자의 순서는 없기 때문이다.

값은 일정하게 유지될 수 있지만 어떤 값이 먼저 나오고, 어떤 값이 뒤에 나올지는 아무도 모르는 것이 Set의 특징이다.

 

 

그럼, Set을 일반적으로 저장하는 방법이 아닌, Spring에서 그것도, xml을 통해서 저장하기 위해서는 어떻게 해야 할까?

 

 

[ A. SetBean.java ]

우선 set을 담을 수 있는 클래스를 하나 만들어야 한다.

package org.List7;
import java.util.Set;
public class SetBean {
	
	private Set<String> addressList;

	public Set<String> getAddressList() {
		return addressList;
	}

	public void setAddressList(Set<String> addressList) {
		this.addressList = addressList;
	}
}

 

 

[ B. List7.xml ]

<bean id="setBean" class="org.List7.SetBean">
<property name="addressList">
	<set value-type="java.lang.String">
		<value>서울시 강남구 역삼동</value>
		<value>서울시 강남구 동궁동</value>
		<value>서울시 영등포구 부동</value>
		<value>서울시 마포구 당산동</value>
		<value>서울시 서초구 이대동</value>
		<value>서울시 서초구 이대동</value>
	</set>
</property>
</bean>

List와 똑같이 xml에서는 set에 들어갈 값을 입력해주면 좋다.

먼저, SetBean을 통해서 빈을 하나 만들어준 뒤, 빈을 닫지 않은 상태에서 그 안의 값을 불러올 수 있도록 property의 name을 통해서 여러 변수 중에서 addressList를 호출하게 된다.

set을 통해서 어떤 타입의 변수를 입력할 것인지 설정하고 <value> 안에 값을 담아서 총 6개의 값을 담게 했다.

여기서 특이한 점은 List는 5번째, 6번째 값이 동일하더라도 총 6개의 값이 저장되는 반면에 Set은 중복 값 저장이 불가능하기 때문에 총 5개의 값만 저장되는 것을 알 수 있다.