[Java] 컬렉션(Collection) 알아보기 + Objects.equals()
컬렉션(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 객체를 이용하여 값을 출력해야 한다.