
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(); } } |
'JAVA > 이론' 카테고리의 다른 글
54. [ JAVA ] Spring Boot에서 발생하는 예외처리(@Exception Hander) (0) | 2025.01.11 |
---|---|
36. [ JAVA ] 배열 : HashMap (0) | 2024.12.17 |
34. [ JAVA ] 문자열 생성하는 방법 (1) | 2024.12.17 |
33. [ JAVA ] 상속 : interface (0) | 2024.12.16 |
31. [ JAVA ] 상속 : 추상클래스(abstract class) (0) | 2024.12.16 |