[day14] java-basic : Set

1 분 소요

Set의 특징

  • 순서 없고, 중복을 허용하지 않는다.

  • Set은 검색 속도를 빠르게 하기 위해 나왔다.

  • 순서가 있는 자료에는 적합하지 않고, 검색에 적합하다.

  • treeset의 경우 각 레벨마다 하나의 데이터만 탐색하기 때문에 더 빠른 것이다.

    image

  • 하지만 전체 데이터에 뽑아내서 정렬하기에는 적합하지 않다.

  • 구현클래스는 HashSet, TreeSet이 있다.

  • 문자열의 경우에는 사전순으로 출력된다.

Set메소드

  • remove(Object o) : 특정 데이터를 삭제한다. index를 매개변수로 사용할 수 없다.

  • Set에는 index가 없기 때문에 List와 달리 get()가 존재하지 않는다.

  • add() : 데이터를 순서없이 입력받는 것이다. 데이터를 넣으면 true, 못 넣으면 false를 반환한다.

  • size() : 배열에 들어있는 전체 데이터의 갯수를 반환해준다.

  • clear() : set에 들어있는 데이터를 모두 다 지워서 사이즈를 0으로 만든다.

  • boolean contains(Object o) : 데이터 o가 있는지 없는지 확인해서 boolean형태로 반환한다.

  • boolean isEmpty() : 데이터가 하나라도 존재하는지 체크한다.

  • addAll(Collection c) : 기존 콜렉션에 추가할 콜렉션의 전체 데이터를 추가한다.

  • iterator() : iterator객체를 반환한다.

  • toArray() : Set이 가지고 있는 모든 요소를 Object 형태로 고정된 배열에 저장한다.

Tree구조

  • [10, 4, 20, 9, 16, 14, 3, 12, 23]의 자료를 트리구조에 넣으면 ?

  • 이진 트리 구조에서 23 < 자료 9개 < 24 이므로 Depth는 4레벨이 되어야 제일 탐색 속도가 빠르다.

  • InOrder방식에서는 Parent보다 작은 수는 다음 레벨의 Left, 큰 수는 Right에 넣는다.

  • 접근 할 때는 Left - Parent - Right로 접근하면 오름차순 정렬이 된다. (InOrder방식)

  • PreOrder, InOder, PostOrder방식은 트리를 구슬로 꿸때 바늘귀가 [왼쪽 / 가운데 / 오른쪽] 중 어디인지 잘 생각해보면 된다.