Backend

Start <명품JAVA> ArrayList

이게왜 2023. 11. 6. 18:11

명품자바의 예제문제, 실습문제를 풀며 공부해 나갑니다.

목표는 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