본문 바로가기
Study/중앙정보처리학원과정

16일차. Collection Framework 2일차, 컬렉션 프레임워크 HashSet

by 얏옹이 2022. 11. 15.
반응형

 

15일차 어제에 이어서 오늘도 Collection Framework로 수업을 진행했다.

 

Java에 있어서 중요한 부분들중에 하나이고, 수업내용을 토대로 이 블로그를 작성하고 있기때문에 오늘도 컬렉션 프레임워크 수업한걸 정리하고자 한다.

 

컬렉션 프레임워크는 크게 Collection 인터페이스와 Map 인터페이스로 나뉘고 그 밑으로 Collection 인터페이스를

 

상속받는 List와 Set이 있다. 각각의 특징과 대표적으로 사용되는 구현클래스를 다시한번 정리해보고자 한다.

 

List - 자료가 대입되는 순서 대로 출력이 된다, 즉 선입선출. 먼저 입력한값이 가장 먼저 나오고 자료를 대입해준 순서대로 나열되어 출력된다. 자료의 중복은 허용이 되기때문에 여러가지 중복되는 값도 대입이 가능하다.

대표적으로 쓰이는 구현 클래스는 ArrayList, Vector, LinkedList가 있다.

 

Set - Set은 List와는 반대다. 자료가 대입되는 순서는 상관이 없다. 순서대로 넣어주었어도 자기 멋대로 출력해준다.

자료의 중복은 허용되지 않는다. 중복으로 값을 대입하면 중복값인 하나만 대입되게 된다

대표적인 구현 클래스는 HashSet, TreeSet 이 있다.

 

Map - 같은 Collection 인터페이스를 상속받는 List, Set과는 달리 Key값과 Value값으로 이루어져있고, 이 둘이 한쌍(pair)로 이루어져있다. key는 unique하기때문에 중복이 허용되지 않고, value는 중복대입이 가능하다

대표적인 구현 클래스는 Hashable, HashMap, TreeMap, Properties가 있다.

 

어제 배운 ArrayList를 복습한 코드 내용을 가볍게 살펴보자.

 

허접한 그림판 짜집기...

 

어제 수업내용을 내 스타일로 재해석 하여 교재를 참고하지 않고 복습을 해보았다.

 

자주쓰이는 메소드 .size() .remove() .get() 을 사용하여 가져오고, 삭제하고, 길이를 재고, 마지막으로 형변환으로 String 타입의 length 메소드까지 활용해보았다.

 

자세한 설명은 15일차 글에 나와있으니 이 파일에 대한 설명은 주석으로 대체하겠다.

 

 

다음은 오늘 배운 Set을 활용해보겠다.

 

 

Set의 특징은 모든 요소들이 List처럼 index값을 가지고 있지 않다는것이다. 길이는 .size()로 동일하게 구할수 있지만

 

각각의 요소(item)에 index number가 있는게 아니라서 get을 통한 값을 가져오는게 아닌

 

Iterator를 사용하여 순회하면서 값을 가져온다.

 

그후 While문을 통하여 .hasNext()를 통해 다음 요소가 있는지 조건을 걸어주고 요소가 있다면 .next()로 하나씩 값을 꺼내와 Object 타입의 변수에 대입해주는걸 반복했다.

 

모든 요소가 검증될때까지 While문은 true라서 계속 반복을 할것이고. 더이상 검증될 다음 요소가 없다면 while문은 false가 되어 종료되고 빠져나온다.

 

Set에서의 remove()는 boolean 타입을 리턴해준다. remove(item)을 입력하면 해당 item이 존재한다면 true를 리턴하고

 

해당 item을 삭제한다.

 

.contain은 확인하는 메서드이다. remove와 동일하게 boolean 타입을 리턴해주고

 

contain(item)은 item이 있는지 확인후에 있다면 true, 없다면 false를 리턴해준다.

 

 

마지막으로 remove처럼 특정 item을 삭제해주는것이 아닌 객체 전체를 삭제하는 clear()가 있다.

 

void타입으로 반환해주는 값 없이, 실행하면 set안에 들어있는 모든 객체를 삭제한다.

 

isEmpty()는 Set이 비어있는지를 조사한다. 이또한 boolean타입으로 비어있다면 true, 요소가 존재한다면 false를 리턴해준다

 

따라서 해당 코드를 실행해보면 이러한 결과가 나온다

 

반응형