개별정리 내용


* Comparator 인터페이스(오버라이딩 필수) 개별 공부 

* 인터페이스를 new 키워드를 사용하여 객체를 생성한다는 것은 익명클래스로 처리하여 메소드를 오버라이딩하여 사용하겠다라는 의미







컬렉션(collection) - 중요 항목


1. 자료구조를 표현하는 방법.

2. 자료구조

-선형구조: 배열, 스택, 큐

-비선형구조: 트리, 그래프


배열 - 자료가 연속적으로 모여져있는 상태

스택 - 자료를 입력하는 입구와 출력하는 출구가 같은 상태. 선입후출 특성을 갖는 자료 구조. FILO

큐 - 자료를 입력하는 입구와 출력하는 출구가 반대 상태. 선입선출 특성을 갖는 자료 구조. FIFO


3. 컬렉션의 종류 (interface)

java.util.Collection - 순서없는 단순한 요소들의 집합(최상위 인터페이스)

java.util.Set - 중복을 허용하지 않는 단순한 요소들의 집합

java.util.List - 순차적 나열, 순서 지정이 가능한 단순한 요소들의 집합

java.util.SortedSet - 값들이 정렬된 Set


java.util.Map - Key와 Value로 구성된 구조(최상위 인터페이스)

java.util.SortedMap - Key가 정렬된 Map



4. Key, Value


Collection 구조-------------------------------------------

Value - 자료구조에 저장되는 데이터(값) 자신. 자동 인덱스

Key - Map 구조에서 사용되는 데이터(값)에 대한 사용자 정의 인덱스.


Value        index->Key의 역할. 자동인덱스

------       -----

홍길동         0

김길동         1  ->자료를 탐색할 때 인덱스를 사용해서 탐색.

박길동         2

...           ...



Map구조---------------------------------------------------

Value         Key ->사용자 정의 인덱스

------       -----

홍길동        hong

김길동        kim  ->자료를 탐색할 때 Key를 사용해서 탐색.

박길동        park

...           ...







ArrayList 클래스


1. Collection 인터페이스를 상속 받은 List 인터페이스를 구현한 클래스.

2. 배열과 비슷한 특성을 가지면서 컬렉션의 특성(크기 지정 필요없음)을 가지고 있다.

3. 형태

-선언

ArrayList 변수 = new ArrayList(); //크기지정 불필요.


-입력

변수.add(값);

변수.add(값);

...


-출력 ->배열과 컬렉션만 지원하는 전용 for문 사용.(확장 for문) 단, 일반for문도 사용 가능.

for(변수의자료형 포문내에서사용할객체명 : 변수) {  // (데이터의자료형 임의의변수명 : 데이터)

System.out.println(obj);

}



//Class60.java -> 배열사용

//Class61.java -> 컬렉션사용








제네릭 표현을 사용한 컬렉션


1. 컬렉션에서 사용할 데이터의 자료형을 한정시키는 것.

2. 메소드나 멤버 변수의 기능은 같지만 그것을 필요로 하는 곳에 따라 넘겨받는 결과의 자료형이 서로 다를 때 틀이 되는 하나의 메소드나 멤버 변수를 정의해놓고 호출하는 쪽에서 요구하는 자료형의 값을 갖도록 하는 것.


//Class62.java -> 제네릭 사용전

//Class63.java -> 제네릭 사용후








제네릭(Generic) 지원 클래스 만들기


1. 제네릭을 지원하기 위해서는 데이터형 인자를 클래스 정의시에 지정해야 하며, 일반적으로 데이터형 인자는 1글자의 영문 대문자로 인자의 수만큼 사용한다.


2. 형태

접근지정자 class 클래스명<데이터형인자, > {


}



//Class64.java







문제) 이름과 전화번호를 저장할 수 있는 자료형 만들기. 컬렉션(ArrayList), Member클래스 이용.

실행 예)

이름 전화번호(1)? hong 111-1111

이름 전화번호(2)? kim 222-2222

이름 전화번호(3)? -1 -> 입력 종료

이름    전화번호

----------------

hong    111-1111

kim     222-2222

park    333-3333

----------------


//MemberDTO.java

//Class65.java








문제) 외부에서 임의의 여러개의 숫자를 입력받고 정렬해서 출력. 컬렉션 이용

실행 예)

숫자 입력(1)?

숫자 입력(2)?

숫자 입력(3)?

숫자 입력(4)?

숫자 입력(5)? -1 > 입력끝 지정 필요

원본:

정렬:


//Class66.java









문제)여러명의 성적을 입력 받고, 점수가 높은 순으로 등수 부여해서 출력. 컬렉션, RecordDTO 이용.

실행 예)

이름 점수(1)?kim 80

이름 점수(2)?park 90

이름 점수(3)?choi 100

이름 점수(4)?hong 70

이름 점수(5)?kang 60->-1 입력끝 지정 필요

-----------------------

1등 choi 100

2등 park 90

3등 kim 80

4등 hong 70

5등 kang 60


//RecordDTO.java

//Class67.java









문제) 여러명의 국,영,수 점수를 입력 받아서 총점, 평균, 판정 결과 출력.

컬렉션, DTO 클래스, Collections.sort(), Comparator 이용.

판정 기준은 

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상.

과락 -> 과목중 40점 미만이 있고, 평균이 60이상.

불합격 -> 평균이 60점 미만

평균이 60점 이상 -> 합격 또는 과락 -> 국영수 점수가 모두 40점 이상인지 확인.

평균이 60점 이하 -> 불합격

정렬 기준은 총점 기준으로 내림차순 정렬.

실행 예)

성적 입력(이름 국어 영어 수학)?hong 100 100 100

성적 입력(이름 국어 영어 수학)?kim 80 90 80

성적 입력(이름 국어 영어 수학)?-1 -> 입력끝 지정 필요

------------------------------------------

이름  국어  영어  수학  총점   평균   판정

------------------------------------------

hong   100   100   100   300  100.0   합격

kim     80    90    80    ..    ..    합격

------------------------------------------


//ScoreDTO.java

//Class68.java








문제) 여러명의 국,영,수 점수를 입력 받아서 총점, 평균, 판정 결과 출력.

컬렉션, DTO 클래스, Collections.sort(), Comparator 이용.


판정 기준은 

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상.

과락 -> 과목중 40점 미만이 있고, 평균이 60이상.

불합격 -> 평균이 60점 미만


평균이 60점 이상 -> 합격 또는 과락 -> 국영수 점수가 모두 40점 이상인지 확인.

평균이 60점 이하 -> 불합격


정렬없이 등수를 판별해서 출력.


실행 예)

성적 입력(이름 국어 영어 수학)?hong 100 100 100

성적 입력(이름 국어 영어 수학)?kim 80 90 80

성적 입력(이름 국어 영어 수학)?-1 -> 입력끝 지정 필요


------------------------------------------------

이름  국어  영어  수학  총점   평균   판정  등수

------------------------------------------------

hong   100   100   100   300  100.0   합격   2등

kim     80    90    80    ..    ..    합격   1등

------------------------------------------------


//ScoreDTO.java

//Class69.java



WRITTEN BY
빨강꼬마

,