JAVA/이론

35. [ JAVA ] 배열 : ArrayList

천재단미 2024. 12. 17. 16:42
728x90
반응형

ArrayList

 

DataBase: 데이터를 영구 저장하는 소프트 웨어 
 
Data Structure :
데이터 구조는 데이터를 효율적으로 접근하고 수정할 수 있도록 조직화하고 저장하는 특별한 형식입니다. 
데이터 구조는 컴퓨터 과학과 프로그래밍의 기본이며, 대량의 데이터를 효율적으로 관리하는 수단을 제공합니다.
 
주요 특징

  • 데이터 저장: 조직화된 방식으로 데이터를 저장합니다.( 변수 1개)
  • 데이터 조직화: 선형(배열, 연결 리스트) 또는 비선형(트리, 그래프) 형식으로 데이터를 구조화합니다.
  • 데이터 처리: 삽입, 삭제, 순회 등의 효율적인 데이터 조작을 가능하게 합니다. (CRUD 작업 / Create, Read, Update, Delete)
  • 메모리 관리: 메모리 사용을 효과적으로 관리합니다.

 
 
저장하는 방식 중에 ArrayList / HashMap 두 가지가 많이 사용됩니다. 
 
 

1. ArrayList


 1) 이름을 저장하려고 합니다. ( 문자열)

        // 자바의 Array(배열)은, 처음 만들때 개수를 정해야 하므로
        // 프로그램을 유연하게 만들 수가 없습니다.

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




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



    
 
   // 데이터 추가 : 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,"홍나나");


        // 확인
        System.out.println(nameList.get(1));



 

        // 데이터 삭제하기  : CRUD 의  D   




         // 홍나나 삭제 (Object)
        nameList.remove("홍나나");

        //   nameList.remove(1) (index)
        nameList.remove(1);



 

        // 저장되어있는 모든 데이터를 가져오는 방법
        // 가져와서 출력
        // 어레이 리스트에 저장된 데이터의 개수를 확인하는 함수




        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();





        // 어레이리스트가 비어있는지 확인하는 함수 isEmpty()




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



 

 
 

 
 
 
1)  가격을 저장하는 어레이 리스트( 정수)
 
Int 가 아닌 Integer를 사용하여야 합니다. 




      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.clear ();

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



 
 

2. 예시 

 
1) 문제
다음 ArrayList 실습문제를 작성하세요.

import java.util.ArrayList;

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

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

 



package entety;

public class Student {

    private int id;
    private String name;
    private int age;


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

    public Student() {
    }


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

 

  

    // 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를 만듭니다.




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

    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;
    }

    public int getAge() {
        return age;
    }

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



  
 
  // TODO: print 함수를 만드세요. 학생 정보를 문자열로 출력
    // 힌트: "ID: [id], 이름: [name], 나이: [age]" 형식 출력
}

 




    // TODO: print 함수를 만드세요. 학생 정보를 문자열로 출력
    // 힌트: "ID: [id], 이름: [name], 나이: [age]" 형식 출력

    public void print(){
        System.out.println("ID : " id + ", 이름 : " + name + ", 나이 : " + age);
    }






package entety;

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 getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    // TODO: print 함수를 만드세요. 학생 정보를 문자열로 출력
    // 힌트: "ID: [id], 이름: [name], 나이: [age]" 형식 출력

    public void print(){
        System.out.println("ID : " id + ", 이름 : " + name + ", 나이 : " + age);
    }
}




class StudentManager {
    private ArrayList students;

    public StudentManager() {
        // TODO: students ArrayList를 초기화하세요.
    }



package cotroller;

import entety.Student;

import java.util.ArrayList;

public class StudentManager {

    private ArrayList students;

    public StudentManager() {

        // TODO: students ArrayList를 초기화하세요.

        students = new ArrayList<>();
    }
    public void addStudent(Student student) {



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



    public void addStudent(Student student) {

        // TODO: 학생을 ArrayList에 추가하는 코드를 작성하세요.

        students.add(student);
    }




    public void removeStudent(int id) {
        // TODO: 주어진 id와 일치하는 학생을 ArrayList에서 제거하는 코드를 작성하세요.
        // 힌트: ArrayList의 remove() 메소드를 사용하세요.
    }




    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를 순회하며 찾습니다.
        return null; // 찾지 못한 경우 null 반환
    }




    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를 순회하며 각 학생 정보를 출력합니다.
 



 public void displayAllStudents () {

        // TODO: 모든 학생의 정보를 출력하는 코드를 작성하세요.
        // 힌트: for-each 루프를 사용하여 ArrayList를 순회하며 각 학생 정보를 출력합니다.

        for(Student student : students) {
            student.print();
    }
}



package cotroller;

import entety.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();
        }
    }
}




public class Main {
    public static void main(String[] args) {
        
        StudentManager manager = new StudentManager();

        // TODO: 최소 3명의 학생을 생성하고 manager에 추가하세요.
   // id 1, 홍길동, 30
     // id 2, 김나나, 22
   // id 3, 최영수, 25
 




import cotroller.StudentManager;
import entety.Student;

 public class Main {

    private static Student[] addStudent;

    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: 모든 학생 정보를 출력하세요.
 



        // TODO: 모든 학생 정보를 출력하세요.

        manager.displayAllStudents();


 



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




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

     manager.findStudent(3).print();       




       // manager.findStudent(3)가 객체 이기때문에 .print();바로 호출하면됩니다. 



        // TODO: 한 명의 학생을 삭제하세요. id가 2인 학생 삭제.
        // TODO: 삭제 후 모든 학생 정보를 다시 출력하세요.




        // TODO: 한 명의 학생을 삭제하세요. id가 1인 학생 삭제.

        manager.removeStudent(2);

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

        manager.displayAllStudents();



 




import cotroller.StudentManager;
import entety.Student;

public class Main {

    private static Student[] addStudent;

    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(2);

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

        manager.displayAllStudents();

    }
}



728x90
반응형
home
}