JAVA

12. Java 어레이 리스트(ArrayList) 사용하기

oioioa 2024. 12. 17. 16:51

ArrayList 만들기

public class Main {
    public static void main(String[] args) {
        // 이름을 저장하려고 한다.
        // 자바의 Array(배열)은, 처음 만들때 갯수를 정해야 하므로
        // 프로그램을 유연하게 만들수가 없다.

        // 따라서, 갯수 제한없이 데이터를 마음대로 추가할수 있는
        // ArrayList 를 사용한다.

       ArrayList<String> nameList = new ArrayList<>();

 

데이터 추가, 억세스하기(add() 메서드 를 사용)

       // 데이터 추가 : CRUD 의 C
       nameList.add("홍길동");
       nameList.add("김나나");
       nameList.add("Mike");

 

데이터 가져오기

       // 데이터 가져오기 CRUD 의 R
        // 첫번째(인덱스) 데이터를 가져온다. 자바에서는 처번째를 == 0
        System.out.println(nameList.get(0) );
        System.out.println(nameList.get(2) );

 

데이터 수정하기

        // 데이터 수정 : CRUD 의 U
        nameList.set(1,"홍나나");

데이터 삭제하기

        // 데이터 삭제 : CRUD 의 D
        // "홍나나" 를 지정하여 삭제
        nameList.remove("홍나나");
        // 인덱스를 지정하여 삭제
        // nameList.remove(1);

 

Arraylist 에 저장된 데이터의 갯수를 확인하는 함수

        // 어레이리스트에 저장된 데이터의 갯수를 확인하는 함수
        System.out.println(nameList.size() );

 

오리지날 반복문을 이용해서, 데이터 가져오는 방법

        // 오리지날 반복문을 이용해서, 데이터를 가져오기
        for(int i = 0 ; i < nameList.size() ; i++){
            System.out.println(nameList.get(i) );

 

실무에서 많이 사용하는 방법으로 데이터를 가져오는 방법

        // 실무에서 많이 사용하는 방법으로 데이터를 모두 가져오시기
        for ( String name : nameList ){
            System.out.println(name);
        }

 

데이터를 초기화 하는 방법

       // 저장된 데이터가 모두 필요없다.
        // 따라서 데이터를 초기화 하고 싶다.(실무사용)
        nameList.clear();

 

ArrayList 가 비어있는지 확인하는 방법

        // 어레이리스트가 비어있는지 확인하는 함수 isEmpty()
        System.out.println(nameList.isEmpty() );

        System.out.println(nameList.size());

 

 

ex)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {

        // 가격을 저장하는 어레이 리스트를 만들겠습니다.
        ArrayList<Integer> priceList = new ArrayList<>();

        priceList.add(3000);
        priceList.add(5000);
        priceList.add(10000);
        priceList.add(3000);
        priceList.add(3000);

        // 실무방법 => for each 방식,
        for ( int price : priceList){
            System.out.println(price);
        }

        // 두번째 데이터만 가져와서 5를 곱해서 출력.
        System.out.println(priceList.get(1) * 5);

        priceList.set(4, 1000);

        for ( int price : priceList){
            System.out.println(price);
        }

        priceList.remove(1);
        for ( int price : priceList){
            System.out.println(price);
        }

        priceList.remove(Integer.valueOf(3000));

        priceList.remove(1);
        for ( int price : priceList){
            System.out.println(price);
        }

        priceList.clear();

        System.out.println(priceList.size());

    }
}

 

Main

import controller.StudentManager;
import entity.Student;

public class Main {
        public static void main(String[] args) {

            StudentManager manager = new StudentManager();

            // TODO: 최소 3명의 학생을 생성하고 manager에 추가하세요.
            // id 1, 홍길동, 30
            Student s1 = new Student(1,"홍길동",30);
            // id 2, 김나나, 22
            Student s2 = new Student(2,"김나나", 22);
            // id 3, 최영수, 25
            Student s3 = new Student(3,"최영수",25);

            manager.addStudent(s1);
            manager.addStudent(s2);
            manager.addStudent(s3);

            // TODO: 모든 학생 정보를 출력하세요.
            manager.displayAllStudents();

            // TODO: ID로 한 명의 학생을 검색하고 그 정보를 출력하세요.
            // id 가 3인 학생 검색하여 출력.
            manager.findStudent(3).print();

            // TODO: 한 명의 학생을 삭제하세요. id가 1인 학생 삭제.
            manager.removeStudent(1);
            manager.displayAllStudents();

            // TODO: 삭제 후 모든 학생 정보를 다시 출력하세요.
        }

    }

 

StudentManager

package controller;

import entity.Student;

import java.util.ArrayList;

public class StudentManager {

    private ArrayList<Student> students;

    public StudentManager() {
        // TODO: students ArrayList를 초기화하세요.
        students = new ArrayList<>();
    }

    public void addStudent(Student student) {
        // TODO: 학생을 ArrayList에 추가하는 코드를 작성하세요.
        students.add(student);
    }

    public void removeStudent(int id) {
        // TODO: 주어진 id와 일치하는 학생을 ArrayList에서 제거하는 코드를 작성하세요.
        // 힌트: ArrayList의 remove() 메소드를 사용하세요.
        for (Student student : students){
            if (student.getId() == id)
                // 어레이 리스에서 삭제
                students.remove(student);
            return;
        }
    }

    public Student findStudent(int id) {
        // TODO: 주어진 id와 일치하는 학생을 찾아 반환하는 코드를 작성하세요.
        // 힌트: for 루프를 사용하여 ArrayList를 순회하며 찾습니다.
        for (Student student : students ){
            if (student.getId() == id)
                return  student;
        }
        return null; // 찾지 못한 경우 null 반환
    }

    public void displayAllStudents() {
        // TODO: 모든 학생의 정보를 출력하는 코드를 작성하세요.
        // 힌트: for-each 루프를 사용하여 ArrayList를 순회하며 각 학생 정보를 출력합니다.
        for(  Student student : students){
            student.print();
        }
    }


}

 

Student

package entity;

public class Student {
    private int id;
    private String name;
    private int age;

    // TODO: 디폴트생성자를 만드세요.

    public Student() {
    }


    // TODO: 다음 생성자를 구현하세요.
    // 힌트: id, name, age를 매개변수로 받아 초기화합니다.

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }


    // TODO: getter와 setter 메소드를 구현하세요.
    // 힌트: 각 필드에 대해 getter와 setter를 만듭니다.

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    // TODO: print 함수를 만드세요. 학생 정보를 문자열로 출력
    // 힌트: "ID: [id], 이름: [name], 나이: [age]" 형식 출력
    public void print(){
        System.out.println("ID :" + id +" " + "이름 :" + name + " "+ "나이 :" + age );
    }
}