자바(Java)

[Java] 컬렉션(Collection) 알아보기 + Objects.equals()

Jye_647 2023. 5. 23. 23:28

컬렉션(Collection)?

배열을 고도화시켜서 컬렉션이라고 부른다.

컬렉션은 참조형 변수만 저장한다.

 

참조형 변수는 주소값을 저장하는 변수이다. 

우리가 변수에 값을 넣으면 그 값을 가리키는 주소가 있는데 그 주소를 저장하는 변수이다.

(예시: 집이라는 변수에 우리집이라는 값을 넣으면 우리집을 가리키는 "서울시 동대문구 --동"이 저장되는 것)


컬렉션 종류

 

List 

- 순서가 있는 데이터 집합(데이터 중복 O, 배열(Array)과  비슷

- ArrayList : 일렬로 데이터를 저장하고 순번대로 값을 하나씩 조회 가능

- LinkedList

- Stack

 

Queue : 위아래가 뚫린 통에 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합.(FIFO;First In First Out)

 

Set

- 순서가 없는 데이터 집합 (데이터 중복 X)

- HashSet : 가장 빠르고 순서 예측 불가능

- TreeSet

- LinkedHashSet : 추가된 순서 또는 가장 최근에 접근한 순서대로 접근 가능(순서보장이 필요할 때 사용)

 

Map

- 순서가 없고, (Key, Value) 쌍으로 이루어진 데이터의 집합(Key값 중복 X)

- HashMap : 중복 X, 순서 보장X, 키와 값으로 null O

- TreeMap


조건문을 통해 "끝"이라는 문자가 입력되었을 경우 반복문을 나오는 코드를 짰다.

근데 "끝"이라는 값을 입력해도 커서가 켜있고 종료되지 않았다.

LinkedHashSet strSet = new LinkedHashSet<>();
while(true){
	String contents = sc.next();
	if(contents == "끝"){
		break;
	}
	strSet.add(contents);
}

그 이유는 Objects.equals에서 확인할 수 있었다.(equals() 알아보기!)

 

[Java] Object클래스, equals() 알아보기

과제를 진행하면서 "=="와 "equals()"의 차이에 대해 잘 알아보고 넘어갔다 생각했는데 equals() 관련 글을 볼 때마다 혼란을 느꼈다. 그래서 다시 정리해보자 글을 남기게 되었다. java.lang 패키지는 자

dahlia15.tistory.com

그렇기에 데이터값을 비교하기 위해 Objects.equals 또는 contents.equals("끝")으로 작성해야한다.

LinkedHashSet<String> strSet = new LinkedHashSet<>();
while(true){
	String contents = sc.nextLine();
	if(Objects.equals(contents, "끝")){
		break;
	}	
	strSet.add(contents);
}

"끝"이라는 입력값과 동시에 출력이 된다.


 Iterator iterator = strSet.iterator();

또한 LinkedHashSet은 get()으로 값을 뽑아올 수 없기에 Iterator 객체를 이용하여 값을 출력해야 한다.