명품자바의 예제문제, 실습문제를 풀며 공부해 나갑니다.
목표는 Collection, Generic, Comparable, Comparator, Iterable, Iterator, Stream, Lambda Expression등을 공부하여
이를 활용한 몬테카를로 시뮬레이션 미니 프로젝트를 진행하는 것 입니다.
나아가 Thread와 Networking을 공부 합니다.
공부에 이용한 재료들 - 명품JAVA, JAVA의 정석,
https://math.hws.edu/javanotes/
https://www.inf.unibz.it/~calvanese/teaching/04-05-ip/lecture-notes/
Lecture notes for Introduction to Programming
www.inf.unibz.it
<ArrayList 문제>
- 이름 4개를 입력받아 ArrayList에 저장하고 모두 출력한 후 제일 긴 이름을 출력하라.
- Iterator를 사용하여 코드를 수정하라.
(명품 JAVA p.409, p.411)
package self_Generic;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Exercise7_3 {
private ArrayList<String> personName;
private static final int MAX_PERSON_NUM = 4;
public void insertPerson() {
personName = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < MAX_PERSON_NUM; i++) {
System.out.print("이름을 입력하세요 >> ");
String insertPersonName;
insertPersonName = sc.next();
this.personName.add(insertPersonName);
}
sc.close();
}
public void printPerson() {
for (String s : this.personName) {
System.out.print(s + " ");
}
System.out.println();
}
public void printPersonByIterator() {
Iterator<String> iterator = this.personName.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
public void compareLengthOfName() {
String longestName = this.personName.get(0);
for (int i = 1; i < MAX_PERSON_NUM; i++) {
if (longestName.length() < this.personName.get(i).length()) {
longestName = this.personName.get(i);
}
}
System.out.println(longestName);
}
public void compareLengthOfNameByIterator() {
Iterator<String> iterator = this.personName.iterator();
String longestName;
if (iterator.hasNext()) {
longestName = iterator.next();
while (iterator.hasNext()) {
String currentName = iterator.next();
if (longestName.length() < currentName.length()) {
longestName = currentName;
}
}
System.out.println(longestName);
}
}
public static void main(String[] args) {
Exercise7_3 user1 = new Exercise7_3();
user1.insertPerson();
// user1.printPerson();
// user1.compareLengthOfName();
user1.printPersonByIterator();
user1.compareLengthOfNameByIterator();
}
}
ArrayList를 사용한 간단한 입력, 출력, 비교 예제입니다.
<ArrayList의 장점>
- 순차적인 데이터 액세스: ArrayList는 데이터에 인덱스를 사용하여 순차적으로 접근할 때 매우 빠릅니다.
- 메모리 사용량: ArrayList는 데이터를 연속적인 메모리 위치에 저장하므로 메모리 사용량이 상대적으로 적습니다.
<ArrayList의 단점>
- 데이터 검색 속도: 중간 또는 끝에서의 데이터 삭제 또는 삽입은 느릴 수 있으며 O(n)의 시간이 소요됩니다.
- 인덱스 변경: 특정 인덱스 뒤에 있는 요소를 추가 또는 제거하면 그 인덱스 이후의 모든 요소를 이동시켜야 하므로 성능에 영향을 줄 수 있습니다.
'Backend' 카테고리의 다른 글
<Backend> Java / Generic 예제문제 2 (3) | 2023.11.08 |
---|---|
<Backend> Java / Generic 예제문제 (2) | 2023.11.07 |
<Backend> Java / Stack, Generic (3) | 2023.11.06 |
<Backend> Java / HashMap 응용 (2) | 2023.11.06 |
<Backend> Java / HashMap (0) | 2023.11.06 |