: ์๋ฐ์์ ์ ๊ณตํ๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋ชจ์(ํ), ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ์กด์ฌํจ
: *List, set, *map์ ์์๋ณผ ๊ฒ -> ๋ฐฐ์ด๋ณด๋ค ์งํ๋ ํํ์
: ๋ฐ์ดํฐ(์๋ฃ)๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๊ตฌ์กฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค. -> ์๊ณ ๋ฆฌ์ฆ
: Collection ์ธํฐํ์ด์ค -> List, Set์ ๊ณตํต ์ฝ๋๋ฅผ ์์ฑํ ๋ถ๋ชจ ์ธํฐํ์ด์ค์ด๋ค.
: Java Collection -> ์๋ฐ์ ์๋ฃ๊ตฌ์กฐ ๋ชจ์(List, Set, Map)
3. List(๋์ด) -> ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด ๋ชจ์์ ๊ตฌ์กฐ์ด๋ฉฐ, ์ธ๋ฑ์ค๊ฐ ์๋ค(์ค๋ณต๋ฐ์ดํฐ ํ์ฉ๋จ).
4. Set(์งํฉ) -> ์ฃผ๋จธ๋ ๋ชจ์์ ์งํฉ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ณต๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ง ์๋๋ค.
5. Map -> Key : Value๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฌ๋จ. Key๋ ์ค๋ณต์ด ํ์ฉ๋์ง์๊ณ , Value๋ ์ค๋ณต์ด ํ์ฉ๋จ
: ์๋ฃ๋ค์ ์์ฐจ์ ์ผ๋ก ๋์ดํ ์๋ฃ๊ตฌ์กฐ๋ก ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌ๋๋ฉฐ, ์ค๋ณตํด์ ๊ฐ์ฒด ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
๊ตฌํ ํด๋์ค๋ก ArrayList์ Vector, LinkedList๊ฐ ์์
โ Student ํด๋์ค
package edu.kh.collection.model.vo;
public class Student {
// ํ๋
private String name;
private int age;
private String region;
private char gender;
private int score;
public Student() {}
public Student(String name, int age, String region, char gender, int score) {
super();
this.name = name;
this.age = age;
this.region = region;
this.gender = gender;
this.score = score;
}
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;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
//toString()์ค๋ฒ๋ผ์ด๋ฉ ์๋์์ฑ
// alt + shifg + s -> s
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", region=" + region + ", gender=" + gender + ", score="
+ score + "]";
}
}
โ StudentService ํด๋์ค
package edu.kh.collection.model.service;
//import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import edu.kh.collection.model.vo.Student;
public class StudentService {
// ํ๋
private Scanner sc = new Scanner(System.in);
// ํ์ ์ ๋ณด๋ฅผ ์ ์ฅํ List ์์ฑ
// java.util.List ์ธํฐํ์ด์ค : List์ ๋ฐ๋์ ํ์ํ ํ์ ๊ธฐ๋ฅ์ ๋ชจ์๋ ์ธํฐํ์ด์ค
// * ์ธํฐํ์ด์ค ๊ฐ์ฒด ์์ฑ x, ๋ถ๋ชจ ์ฐธ์กฐ๋ณ์ ใ
// java.util.ArrayList : ๋ฐฐ์ด ํํ List(๊ฐ์ฅ ๋ํ์ ์ธ List ์์ ํด๋์ค)
// ArrayList() ๊ธฐ๋ณธ ์์ฑ์ : ๊ธฐ๋ณธ ํฌ๊ธฐ 10์ง๋ฆฌ ๋ฆฌ์คํธ ์์ฑ
// -> ํ์ง๋ง ๋ฆฌ์คํธ๋ ํฌ๊ธฐ๊ฐ ๋์๋ค ์ค์๋ค ํ๊ธฐ๋๋ฌธ์ ํฐ ์๋ฏธ๋ ์๋ค.
// ArrayList(์ฉ๋) : ์ฉ๋๋งํผ์ ๋ฆฌ์คํธ ์์ฑ -> ๋ง์ฐฌ๊ฐ์ง๋ก ํฐ ์๋ฏธ๋ ์๋ค.
// -> ๋๋ฌด ํฐ๊ฐ์ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์๋ชจํจ.
//private List<Student> studentList = new ArrayList<Student>(); // ๊ฒ์, ์กฐํ์ ํจ์จ์
private List<Student> studentList = new LinkedList<Student>(); // ์ถ๊ฐ, ์์ , ์ญ์ ์ ํจ์จ์
// ์ ์ฅ๋๋ ํ์
์ด Student๋ก ์ ํ๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค๋ ๋ป
// == Student๋ง ์ ์ฅ ๊ฐ๋ฅ == ๋ชจ๋ ๊ฒ Student
// == Student์์ ๊ฒ์ฌํ ํ์๊ฐ ์๋ค.
public StudentService() {
studentList.add( new Student("ํ๊ธธ๋", 25, "์์ธ์ ์ค๊ตฌ", 'M', 90) ) ;
studentList.add( new Student("๊ณ ์ํฌ", 23, "๊ฒฝ๊ธฐ๋ ์์ฐ์", 'F', 100) ) ;
studentList.add( new Student("๊ฐ์์ง", 30, "์์ธ์ ๊ฐ๋จ๊ตฌ", 'M', 80) ) ;
studentList.add( new Student("์ค๋ฏธ๋", 27, "์ถฉ๋ถ ์ฒญ์ฃผ์", 'F', 90) ) ;
studentList.add( new Student("๋ฐ์ฃผํฌ", 24, "์์ธ์ ์๋๋ฌธ๊ตฌ", 'F', 70) ) ;
}
public void ex() {
// List ํ
์คํธ
// List.add(Object e) : ๋ฆฌ์คํธ์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ
// * ๋งค๊ฐ๋ณ์ ํ์
์ด Object == ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์์
studentList.add(new Student()); // 0๋ฒ ์ธ๋ฑ์ค
//studentList.add(sc); // 1๋ฒ ์ธ๋ฑ์ค
//studentList.add("๋ฌธ์์ด"); // 2๋ฒ ์ธ๋ฑ์ค
//studentList.add(new Object()); // 3๋ฒ ์ธ๋ฑ์ค
// -> ์ปฌ๋ ์
์ ํน์ง : ์ฌ๋ฌ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
// (๋ฐํํ)
// Object List.get(index i) : ๋ฆฌ์คํธ์์ i๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ
// ๋ฐํํ์ด Object == ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค.
if( studentList.get(0) instanceof Student) {
System.out.println(((Student)studentList.get(0)).getName());
}
// ์ ๋ค๋ฆญ์ค(Generics) == ์ ๋ค๋ฆญ
// -> ์ปฌ๋ ์
์ ์ ์ฅ๋๋ ๊ฐ์ฒด ํ์
์ ํ๊ฐ์ง๋ก ์ ํ
System.out.println(studentList.get(0).getName());
}
/**
* ๋ฉ๋ด ์ถ๋ ฅ์ฉ ๋ฉ์๋
* alt + shift + j
* ๋ฉ์๋ ์ค๋ช
์ฉ ์ฃผ์
* @author cje@naver.com.
*/
public void displayMenu() {
int menuNum = 0;
do {
System.out.println("\n===========ํ์๊ด๋ฆฌ ํ๋ก๊ทธ๋จ===========\n");
System.out.println("1. ํ์ ์ ๋ณด ์ถ๊ฐ");
System.out.println("2. ํ์ ์ ์ฒด ์กฐํ");
System.out.println("3. ํ์ ์ ๋ณด ์์ ");
System.out.println("4. ํ์ ์ ๋ณด ์ ๊ฑฐ");
System.out.println("5. ์ด๋ฆ์ผ๋ก ๊ฒ์(์ผ์น)");
System.out.println("6. ์ด๋ฆ์ผ๋ก ๊ฒ์(ํฌํจ)");
System.out.println("0. ํ๋ก๊ทธ๋จ ์ข
๋ฃ");
System.out.print("\n๋ฉ๋ด ๋ฒํธ ์ ํ >> ");
try {
menuNum = sc.nextInt();
System.out.println();
switch(menuNum) {
case 1 : System.out.println(addStudent()); break;
case 2 : selectAll(); break;
case 3 : System.out.println(updateStudent()); break;
case 4 : System.out.println(removeStudent()); break;
case 5 : searchName(); break;
case 6 : searchName2(); break;
case 0 : System.out.println("ํ๋ก๊ทธ๋จ ์ข
๋ฃ..."); break;
default : System.out.println("๋ฉ๋ด์ ์์ฑ๋ ๋ฒํธ๋ง ์
๋ ฅํด์ฃผ์ธ์.");
}
} catch(InputMismatchException e) {
System.out.println("error : ์
๋ ฅ ํ์์ด ์ ํจํ์ง ์์ต๋๋ค. ๋ค์ ์๋ํด์ฃผ์ธ์.");
sc.nextLine(); // ์
๋ ฅ๋ฒํผ์ ๋จ์์๋ ์๋ชป๋ ๋ฌธ์์ด ์ ๊ฑฐ
menuNum = -1; // ์ฒซ ๋ฐ๋ณต ์ ์๋ชป ์
๋ ฅํ๋ ๊ฒฝ์ฐ menuNum์ด 0์ ๊ฐ์ง๊ณ ์์ด ์ข
๋ฃ๋๋๋ฐ,
// ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ์ํด ์์๊ฐ -1 ๋์
}
}while(menuNum != 0);
}
/**
* 1. ํ์ ์ ๋ณด ์ถ๊ฐ ๋ฉ์๋
* - ์ถ๊ฐ ์ฑ๊ณต ์ "์ฑ๊ณต", ์คํจ ์ "์คํจ"๋ฌธ์์ด ๋ฐํ
*/
public String addStudent() throws InputMismatchException{
System.out.println("==============ํ์ ์ ๋ณด ์ถ๊ฐ==============");
System.out.print("์ด๋ฆ : ");
String name = sc.next();
System.out.print("๋์ด : ");
int age = sc.nextInt();
sc.nextLine(); // ์
๋ ฅ๋ฒํผ ๊ฐํ ๋ฌธ์ ์ ๊ฑฐ
System.out.print("์ฌ๋๊ณณ : ");
String region = sc.nextLine();
System.out.print("์ฑ๋ณ(M/F) : ");
char gender = sc.next().charAt(0);
System.out.print("์ ์ : ");
int score = sc.nextInt();
// Student ๊ฐ์ฒด ์์ฑ ํ List์ ์ถ๊ฐ
if(studentList.add( new Student(name, age, region, gender, score) ) ) {
// add์ ๋ฐํํ์ boolean ํ์
// ์ ๋ค๋ฆญ <Student>๋๋ฌธ์ Listํ์
์ด Student๋ก ์ ํ๋จ
return "์ฑ๊ณต";
}else {
return "์คํจ";
}
}
/**
* 2. ํ์ ์ ์ฒด ์กฐํ ๋ฉ์๋
*/
public void selectAll() {
// - List๋ ์ธ๋ฑ์ค๊ฐ ์๋ค.(0๋ฒ ๋ถํฐ ์์)
// - List์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ์ป์ด์ค๋ ๋ฐฉ๋ฒ : int List.size()
// -> ๋ฐฐ์ด๋ช
.length ๋์ ์ฌ์ฉ
// - List๊ฐ ๋น์ด์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ
// boolean List.isEmpty() : ๋น์ด์์ผ๋ฉด true๋ฅผ ๋ฐํ
System.out.println("========ํ์ ์ ์ฒด ์กฐํ========");
// studentList๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ "ํ์ ์ ๋ณด๊ฐ ์์ต๋๋ค" ์ถ๋ ฅ
//studentList.size() == 0 ๋๋
if(studentList.isEmpty()) {
System.out.println("ํ์ ์ ๋ณด๊ฐ ์์ต๋๋ค.");
return; // ํ์ฌ ๋ฉ์๋๋ฅผ ์ข
๋ฃํ๊ณ ํธ์ถํ ๊ณณ์ผ๋ก ๋์๊ฐ
// ๋จ, ๋ฐํ๊ฐ์ ์๋ค(void)
}
// ์ผ๋ฐ for๋ฌธ
// for(int i = 0; i < studentList.size(); i++) {
// System.out.println(studentList.get(i));
// }
// ํฅ์๋ for๋ฌธ(for each๋ฌธ)
// - ์ปฌ๋ ์
, ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ณต์ ๊ทผํ ์ ์์ for๋ฌธ
// (์์ฐจ์ : 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ ๋ง์ง๋ง์์๊น์ง ์ธ๋ฑ์ค๋ฅผ 1์ฉ ์ฆ๊ฐ)
// [์์ฑ๋ฒ]
// for(์ปฌ๋ ์
๋๋ ๋ฐฐ์ด์์ ๊บผ๋ธ ํ๊ฐ์ ์์๋ฅผ ์ ์ฅํ ๋ณ์ : ์ปฌ๋ ์
๋ช
๋๋ ๋ฐฐ์ด๋ช
){ }
int index = 0;
for( Student std : studentList ) {
// std์๋ for๋ฌธ ๋ฐ๋ณต ์ ๋ง๋ค 0,1,2... ์ธ๋ฑ์ค ์์๋ค์ ํ๋ฒ์ฉ ์ ์ฅ๋จ
System.out.print((index++)+ "๋ฒ : ");
System.out.println(std);
}
}
/**
* 3. ํ์ ์ ๋ณด ์์ ๋ฉ์๋
*/
public String updateStudent() throws InputMismatchException{
// Student List.set(int index, Student e)
// -> List์ i๋ฒ์งธ ์์๋ฅผ ์ ๋ฌ๋ฐ์ e๋ก ๋ณ๊ฒฝ
// -> (๋ฐํ) Student == ๋ณ๊ฒฝ ์ Student ๊ฐ์ฒด๊ฐ ๋ด๊ฒจ์๋ค.
System.out.println("==========ํ์ ์ ๋ณด ์์ ==========");
System.out.print("์ธ๋ฑ์ค ๋ฒํธ ์
๋ ฅ : ");
int index = sc.nextInt();
// 1) ํ์ ์ ๋ณด๊ฐ studentList์ ์๋๊ฐ? == ๋น์ด์๋๊ฐ
if(studentList.isEmpty()) {
return "์
๋ ฅ๋ ํ์ ์ ๋ณด๊ฐ ์์ต๋๋ค.";
// 2) ์
๋ ฅ๋ ์ซ์๊ฐ 0๋ณด๋ค ์์๊ฐ? (์์ ๊ฒ์ฌ)
}else if(index < 0) {
return "์์๋ ์
๋ ฅํ ์ ์์ต๋๋ค";
// 3) ๋ง์ฝ ๋ฌธ์์ด์ ์
๋ ฅํ ๊ฒฝ์ฐ -> ์์ธ์ฒ๋ฆฌ throws
// 4) ์
๋ ฅ๋ฐ์ ์ซ์๊ฐ studentList ๋ฒ์ ๋ด ์ธ๋ฑ์ค ๋ฒํธ์ธ๊ฐ?
}else if(index >= studentList.size()) {
return "๋ฒ์๋ฅผ ๋์ด์ ๊ฐ์ ์
๋ ฅํ ์ ์์ต๋๋ค.";
}else {
// ์์ ์ฝ๋ ์์ฑ
System.out.println(index + "๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅ๋ ํ์ ์ ๋ณด");
System.out.println(studentList.get(index));
System.out.print("์ด๋ฆ : ");
String name = sc.next();
System.out.print("๋์ด : ");
int age = sc.nextInt();
sc.nextLine(); // ์
๋ ฅ๋ฒํผ ๊ฐํ ๋ฌธ์ ์ ๊ฑฐ
System.out.print("์ฌ๋๊ณณ : ");
String region = sc.nextLine();
System.out.print("์ฑ๋ณ(M/F) : ");
char gender = sc.next().charAt(0);
System.out.print("์ ์ : ");
int score = sc.nextInt();
// ์
๋ ฅ๋ฐ์ index ๋ฒ์งธ์ ์๋ก์ด ํ์ ์ ๋ณด๋ฅผ ์
ํ
-> ์์
// ์ด๋, index๋ฒ์งธ์ ์๋ ๊ธฐ์กด ํ์ ์ ๋ณด๊ฐ ๋ฐํ๋๋ค.
Student temp = studentList.set(index, new Student(name, age, region, gender, score));
return temp.getName() + "์ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค.";
}
}
/**
* 4. ํ์ ์ ๋ณด ์ ๊ฑฐ ๋ฉ์๋
* @throws InputMismatchException
*/
public String removeStudent() throws InputMismatchException{
// Student List.remove(int index)
// ๋ฆฌ์คํธ์์ index๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐ
// (๋ฐํ) ์ ๊ฑฐ๋ index๋ฒ์ ์์๊ฐ ๋ฐํ๋๋ค.
// *List๋ ์ค๊ฐ์ ๋น์ด์๋ ์ธ๋ฑ์ค๊ฐ ์๊ฒ ํ๊ธฐ ์ํด์
// remove() ๋์ ์ ๋ค์ชฝ ์์๋ฅผ ํ ์นธ์ฉ ๋น๊ฒจ์จ๋ค.
System.out.println("==========ํ์ ์ ๋ณด ์ ๊ฑฐ==========");
System.out.print("์ธ๋ฑ์ค ๋ฒํธ ์
๋ ฅ : ");
int index = sc.nextInt();
// 1) ํ์ ์ ๋ณด๊ฐ studentList์ ์๋๊ฐ? == ๋น์ด์๋๊ฐ
if(studentList.isEmpty()) {
return "์
๋ ฅ๋ ํ์ ์ ๋ณด๊ฐ ์์ต๋๋ค.";
// 2) ์
๋ ฅ๋ ์ซ์๊ฐ 0๋ณด๋ค ์์๊ฐ? (์์ ๊ฒ์ฌ)
}else if(index < 0) {
return "์์๋ ์
๋ ฅํ ์ ์์ต๋๋ค";
// 3) ๋ง์ฝ ๋ฌธ์์ด์ ์
๋ ฅํ ๊ฒฝ์ฐ -> ์์ธ์ฒ๋ฆฌ throws
// 4) ์
๋ ฅ๋ฐ์ ์ซ์๊ฐ studentList ๋ฒ์ ๋ด ์ธ๋ฑ์ค ๋ฒํธ์ธ๊ฐ?
}else if(index >= studentList.size()) {
return "๋ฒ์๋ฅผ ๋์ด์ ๊ฐ์ ์
๋ ฅํ ์ ์์ต๋๋ค.";
}else {
// ํ์ ์ ๋ณด ์ ๊ฑฐ
System.out.print("์ ๋ง ์ญ์ ํ์๊ฒ ์ต๋๊น? (Y/N) : ");
char ch = sc.next().toUpperCase().charAt(0);
// String.toUpperCase() : ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณ๊ฒฝ
if(ch == 'Y') {
Student temp = studentList.remove(index);
return temp.getName() + "์ ์ ๋ณด๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.";
}else {
return "์ทจ์";
}
}
}
/**
* ์ด๋ฆ์ผ๋ก ๊ฒ์(์ ์ฒด ์ผ์น)
*/
public void searchName() {
// ๊ฒ์ํ ์ด๋ฆ ์
๋ ฅ :
// ์์ ์ ๋ณด ์ถ๋ ฅ
// ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.
System.out.println("==========ํ์ ๊ฒ์(์ด๋ฆ ์ผ์น)==========");
System.out.print("๊ฒ์ํ ์ด๋ฆ ์
๋ ฅ : ");
String input = sc.next();
boolean flag = true;
// ํฅ์๋ for๋ฌธ
for( Student std : studentList ) {
if( input.equals(std.getName())) { // ์ด๋ฆ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ
System.out.println(std);
flag = false;
}
}
if(flag) {
System.out.println("๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.");
}
}
/**
* ์ด๋ฆ์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋๋ ํ์์ ์ฐพ์์ ์กฐํํ๋ ๋ฉ์๋
*/
public void searchName2() {
System.out.println("==========ํ์ ๊ฒ์(๋ฌธ์์ด ํฌํจ)==========");
System.out.print("์ด๋ฆ์ ํฌํจ๋๋ ๋ฌธ์์ด ์
๋ ฅ : ");
String input = sc.next();
boolean flag = true;
// ํฅ์๋ for๋ฌธ
for( Student std : studentList ) {
// boolean String.contains(๋ฌธ์์ด) : String์ ๋ฌธ์์ด์ด ํฌํจ๋์ด์์ผ๋ฉด true ์๋๋ฉด false
if( std.getName().contains(input)) {
System.out.println(std);
flag = false;
}
}
if(flag) {
System.out.println("๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.");
}
}
}
โ StudentRaun ํด๋์ค
package edu.kh.collection.run;
import edu.kh.collection.model.service.StudentService;
public class StudentRun {
public static void main(String[] args) {
StudentService service = new StudentService();
service.displayMenu();
}
}