프로그램에서 데이터에 대한 반복 계산을 작성하는 방법은 여러 가지가 있습니다. for 루프와 while 루프로 배열이나 입력 등 반복되는 데이터가 있을 때 그것을 하나씩 처리합니다. for (i=0; i 0; } public Student next() { Student st = shuffleList.get(0); shuffleList.remove(st); // 다음 요소를 꺼내 돌려주고 삭제한다 return st; } } } 프로젝트에서 여러 가지 콜렉션에 대해 for-each 문으로 차례로 돌려주며 뭔가 계산하는 기능을 사용하는데 이터레이터 패턴이 매우 유용합니다.
다음은 입력받은 학생을 고유번호에 따라 팀을 나누는 프로그램이다. 단 여기서 이름이 같은 사람이 나오면 두번째 부터는 차례로 (1), (2), 순서로 번호를 이름 뒤에 붙여준다. 왼쪽의 입력에 대해 오른쪽과 같은 출력이 나오게 프로그램을 작성해 보자. 이름은 같은 이름이 나오면 구분되게 차례로 증가하는 번호를 뒤에 붙여주고, 팀은 학생의 번호로 해당 학생을 찾는다. 1 lee 3 m 2 kim 4 m 3 cho 3 f 4 park 2 m 5 kang 3 f 6 lee 2 f 7 kim 3 m 8 song 3 f 9 choi 2 m 10 cho 2 f 0 A 1 2 3 4 0 B 3 5 7 0 C 2 4 0 D 7 8 9 10 0 end 1 lee 3학년 남 2 kim 4학년 남 3 cho 3학년 녀 4 ..
앞에서 equals 메소드의 오버라이딩으로 비교와 검색을 할 수 있음을 보았다. 그런데 두 객체에 대한 비교가 같다/같지않다로 할 수도 있지만 정렬을 하고 싶다면 크다, 같다, 작다의 세 가지 경우를 구분할 수 있어야 한다. C의 strcmp가 이러한 비교 함수의 원조다. strcmp는 두 char* 포인터를 받아서 앞의 것이 작으면 -1, 같으면 0, 크면 1을 돌려준다. 반환형은 int다. 자바에서 이런 비교를 해주는 메소드가 compareTo다. compareTo는 많은 라이브러리 클래스에 이미 구현되어 있는데, 대표적인 예로 역시 String 클래스를 살펴보자. String str1 = scan.next(); String max = str1; while (scan.hasNext()) { str1 ..
- Total
- Today
- Yesterday
- 이터러블
- 스트링
- sort key
- 이터레이터
- rust
- python example
- CompareTo
- max
- indexof
- 콜렉션
- APPEND
- C++ 클래스
- contains
- ToString
- format
- 패턴
- TypeError
- comparable
- 지연계산
- Lazy evaluation
- python exercise
- contentEquals
- 스트링 +
- 자바regex
- 동적바인딩
- zip
- Iterator
- Camel Style
- follow
- typedef
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |