N스크린하이브리드앱과정/JAVA

[4주][3일][3~4th] JAVA: 자료구조와 컬렉션(collection). Set, List.

광천스러움 2013. 8. 7. 14:24

* 개념

컬렉션 : 다수의 데이터, 데이터 그룹

스택 : 마지막에 넣은 데이터부터 순서대로 꺼낼 수 있는 데이터 구조(LIFO).

큐 : 들어온 순서대로 데이터를 꺼낼 수 있는 데이터 구조(FIFO).

 

* List 계열의 대표적 2가지

// ArrayList : 데이터가 순차적으로 저장
// LinkedList : 데이터와 함께 다음 데이터 위치로 저장

 

* 용어 정리

Set

(1) HashSet() : 순서 제멋대로, 중복 안됨.

(2) LinkedHashSet() : 순서는 있으나, 중복 안됨.

(3) TreeSet() : 순서 오름차순으로 자동정렬, 데이터형이 다를 경우 저장 안됨!(예: 문자형, 정수형이

  배열 안에 섞여있을 경우)

 

박싱, 오토박싱 사용법

(1) 박싱 : set.add(new Integer(123));
              set.add(new Float(3.14f)); ☜ 실수형, 문자형도 가능!
(2) 오토박싱 : set.add(234); ☜ Integer형태로 자동 변환!

 

toString() 생략 코딩법 자동 오버로딩이 되있기 때문

//System.out.println(set.toString());
  System.out.println(set); toString 생략

 

Set, List의 메서드

set1.isEmpty() set1배열 안의 내용이 비었는지 확인(Boolean 형태)

set1.add() 배열 안에 들어갈 내용을 추가

-> system.out.println(set1.add(4)) 출력문 안에서 사용될때는 "Boolean" 형태가 됨.

set1.size() 배열 안의 크기를 나타냄

set1.remove() 배열 안의 내용을 지움

list.size() set과 같다

list.contains()

list.indexOf() 앞에서부터 데이터 위치를 찾음

list.lastIndexOf() 뒤에서부터 찾음

list.set(바꿀내용, 교체할 내용) 배열 안에 있는 내용을 교체해줌.

 

List

list.set(list.indexOf("4번"), "5번"); set(): 문자 혹은 숫자를 교체해줌.

 

 

☆ 실습(1) : set 테스트

* Hashset 클래스

- add로 데이터 저장 가능

 - Integer나 Float 클래스 등으로 박싱이 가능(자동변환 되므로 오토박싱 가능)

 - HastSet(10,8)로 초기공간 지정 가능

 

* LinkedHashSet 클래스 : 순서 유지

- add로 추가, remove로 지우기, isempty()로 비었나 확인하기 등 사용 가능

 

* TreeSet 클래스

- 70번 : 메모리 생성시 괄호 안에 set2의 요소들을 모조리 받아올 수 있음

 - 데이터형이 통일되어 있다면(예를 들어 정수형) 자동으로 정렬됨

 - 정렬과 검색에 강함!

 

* 결과

 

 

실습(2) : List 테스트

java.util.List 인터페이스로 Import 해줘야 함.

 

* ArrayList 클래스

 - size()로 크기 확인, contains()로 데이터의 유무 확인(true, false),

    indexof()로 앞에서부터 위치 확인, lastindexof()로 뒤에서부터 위치 찾기가 가능

 

 - 37번 : set(indexof("찾을 요소"),"바꿀 요소")으로 요소 교환 가능

 - get()으로 각 요소에 접근 가능

 - 47번 : 향상된 for문으로 list요소 전체를 출력 가능

 

* 결과

 

 

 

실습(3) : HashSet으로 로또 번호 출력하기

 - math.random()함수를 이용해서 난수를 6개 뽑아냄

 

* 결과

 - 할 때마다 다른 숫자가 출력됨