Java programming

(22.10.20)Java ν”„λ‘œκ·Έλž˜λ° ArrayListλ₯Ό ν™œμš©ν•œ CRUD

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2022. 10. 20.

ArrayList μ‹€μŠ΅

**ν‚€λ³΄λ“œλ‘œλΆ€ν„° μ±…μ˜ μ €μž(Author) 정보λ₯Ό μž…λ ₯λ°›μ•„μ„œ Author 객체 생성(속성:번호 이름 μ „ν™”λ²ˆν˜Έ)

3인의 μ €μž₯ 정보λ₯Ό Arraylist에 μ €μž₯ν•˜μ—¬ printAuthor() λ©”μ†Œλ“œ ν˜ΈμΆœν•˜μ—¬ printAuthor() λ©”μ†Œλ“œλŠ” λ¦¬μŠ€νŠΈμ— ν¬ν•¨λœ μ €μž λͺ©λ‘μ„ 화면에 ν‘œμ‹œν•œλ‹€

searchAuthor() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ λ¦¬μŠ€νŠΈμ—μ„œ 번호둜 κ²€μƒ‰ν•˜μ—¬ 정보λ₯Ό μ°ΎλŠ” κΈ°λŠ₯을 μž‘μ„±ν•œλ‹€.

 

Main 클래슀 μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.ArrayList;
import java.util.Scanner;
import com.ezen.javaoop.Author;
 
public class CollectionTest 
{
    public static void main(String[] args) 
    {
        ArrayList<Author> Authorlist = new ArrayList<>();
        Scanner kbd = new Scanner(System.in);
        for(int i=0;i<3;i++) {
            System.out.print("번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
            int num = kbd.nextInt();
            String input1 = kbd.next();
            String input2 = kbd.next();
            kbd.nextLine();
            Authorlist.add(new Author(num, input1, input2));    
        }
        printAuthor(Authorlist);
        System.out.print("검색할 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
        int findnum = kbd.nextInt();
            Author found = searchAuthor(Authorlist,findnum);    
            found.printinfor();
    }
    public static void printAuthor( ArrayList<Author> Authorlist) {
        for(int i =0;i<Authorlist.size();i++) {
            Authorlist.get(i).printinfor();
        }
    }
    public static Author searchAuthor(ArrayList<Author> Authorlist, int a) {
        Author author = null;
        for(int i =0;i<Authorlist.size();i++) {
            author = Authorlist.get(i);
            if(a==(author.getNum())) {
                return author;
            }    
        }
        return null;
    }
}
cs

Author 클래슀 μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Author {
    private int num;
    private String name;
    private String phone;
    
    public Author() {}
    public Author(int num, String name, String phone) {
        this.setNum(num);
        this.setName(name);
        this.setPhone(phone);
    }
    public void printinfor() {
        System.out.printf("%d\t%s\t%s\n", num, name, phone);
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}
cs

μ½˜μ†” κ°’:

번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.11 dean 010-5465-1646
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.12 pual 010-5645-4148
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.13 bin 010-1564-3625
11 dean 010-5465-1646
12 pual 010-5645-4148
13 bin 010-1564-3625
검색할 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.12
12 pual 010-5645-4148

 

μ–΄μ œ 같은 κ²½μš°μ—” namelist.add("κ°•ν˜Έλ™"); 둜 ArrayList에 문자λ₯Ό λ°”λ‘œ λ‹΄μ•„μ„œ get(i)ν•˜λ©΄ μ €μž₯된 κ°’(κ°•ν˜Έλ™)이 λ°”λ‘œ λ‚˜μ™”μ§€λ§Œ, μ˜€λŠ˜κ°™μ€ κ²½μš°λŠ” 객체λ₯Ό λ‹΄μ•˜κΈ° λ•Œλ¬Έμ— 즉 Authorlist.add(new Author(num, input1, input2));

Author 객체λ₯Ό λ‹΄μ•˜κΈ°λ•Œλ¬Έμ— Authorlist.get(i) λ₯Ό print ν•˜λ©΄ μ°Έμ‘° μ£Όμ†Œλ§Œ λ‚˜μ˜¨λ‹€. λ”°λΌμ„œ .toString을 μ˜€λ²„λΌμ΄λ“œ ν•΄μ„œ μ“°λ˜κ°€ μ•„λ‹ˆλ©΄ μœ„μ™€ 같은 λ°©μ‹μ²˜λŸΌ Author 클래슀 μ½”λ“œμ— printν•  ν˜•μ‹μ˜ λ©”μ†Œλ“œλ₯Ό λ§Œλ“€λ©΄ λœλ‹€.


searchAuthor λ©”μ†Œλ“œλ₯Ό List의 μžˆλŠ” κΈ°λŠ₯을 μ¨μ„œ μ½”λ“œλ₯Ό μ§œλ³Έλ‹€λ©΄

.contains κΈ°λŠ₯을 μ¨μ•Όν•œλ‹€.

λ¨Όμ € Main 클래슀의 searchAuthor λ©”μ†Œλ“œμ˜ μžλ£Œν˜•μ„ Authorμ—μ„œ void둜 λ°”κΎΈκ³ 

1
2
3
4
5
6
7
    public static void searchAuthor(ArrayList<Author> Authorlist, int a) {
        Author key = new Author();
        key.setNum(a);
        boolean cont = Authorlist.contains(key);
        System.out.println("포함여뢀:"+ cont);
        
    }
cs

Main ν΄λž˜μŠ€μ— searchAuthor() ν˜ΈμΆœν• λ•Œλ„ 양식이 λ°”κΏ”μ€˜μ•Ό κ·Έλƒ₯

searchAuthor(Authorlist,findnum);

μ΄λ ‡κ²Œ ν˜ΈμΆœν•΄μ£Όλ©΄ λœλ‹€. searchAuthorμ—μ„œ ν”„λ¦°νŠΈ 방식을 정해쀬기 λ•Œλ¬Έμ΄λ‹€.

 

Author 클래슀 μ½”λ“œ μ—μ„œ .equalsλ₯Ό μ˜€λ²„λΌμ΄λ“œν•΄μ„œ 숫자 값이 κ°™μœΌλ©΄ trueκ°€ λ‚˜μ˜€λ„λ‘ overrideν•΄μ€€λ‹€.

1
2
3
4
5
6
7
8
    @Override
    public boolean equals(Object obj) {
        Author z = (Author)obj;
        if(this.num==z.num) {
            return true;
        }
        return false;
    }
cs

μ½˜μ†” κ°’:

번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.14 bob 2325-151
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.15 james 2165-5498
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.16 jun 118-4541
14 bob 2325-151
15 james 2165-5498
16 jun 118-4541
검색할 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.15
포함여뢀:true

 

 

if문을 더 κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•˜λ©΄

return this.num==z.num ? true : false

 


참이 λ‚˜μ™”μ„λ•Œ 정보λ₯Ό μ–»μœΌλ €κ³  ν•˜λ©΄ Main 클래슀의 searchAuthor λ©”μ†Œλ“œμ˜ if문을 μ¨μ„œ ν‘œν˜„ν•˜λ©΄ λœλ‹€.

κ·Έλ ‡λ‹€λ©΄ λ‹€μ‹œ Main 클래슀의 searchAuthor λ©”μ†Œλ“œμ˜ μžλ£Œν˜•μ„ Author으둜 λ°”κΏ”μ£Όκ³ 

1
2
3
4
5
6
7
8
9
    public static Author searchAuthor(ArrayList<Author> Authorlist, int a) {
        Author key = new Author();
        key.setNum(a);
        if(Authorlist.contains(key)) {
            return Authorlist.get(Authorlist.indexOf(key));
        }
        return null;
    }
}
cs

 

μœ„μ— 메인 클래슀의 호좜 방식도 λ‹€μ‹œ μ›λž˜ ν˜•νƒœλ‘œ λ°”κΏ”μ€€λ‹€.

	System.out.print("검색할 번호λ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
	int findnum = kbd.nextInt();
	Author found = searchAuthor(Authorlist,findnum);    
	found.printinfor();

μ½˜μ†” κ°’:

번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.1 2 3
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.4 5 6
번호 μ΄λ¦„ μ „ν™”λ₯Ό μž…λ ₯ν•˜μ„Έμš”.7 8 9
1 2 3
4 5 6
7 8 9
검색할 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.7
7 8 9

 


**Listλ₯Ό μ΄μš©ν•œ CRUD μ‹€μŠ΅

ProductλΌλŠ” 객체λ₯Ό λ§Œλ“€μ–΄ modelno, name, price, date 4개의 속성을 κ°–κ²Œ ν•˜λΌ.

ArrayListλ₯Ό μ‚¬μš©ν•˜μ—¬ λ§Œλ“€μ–΄λΌ μ‹œμž‘μ‹œμ—” 메뉴 ν‘œμ‹œκ°€ λ‚˜μ˜€κ²Œ ν•˜λΌ

 

Main 클래슀 μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import java.util.ArrayList;
import java.util.Scanner;
 
public class ExceptionMain2 
{
    static ArrayList<Product> product = new ArrayList<>();
    static enum Menu{LIST, ADD, FIND, UPDATE, DELETE, EXIT};
    public static void main(String[] args) 
    {
        boolean go = true;
        Menu menu = null//MenuInputException
        while(go) {
            menu = menu();
            if(menu==null) {
                System.err.println("λ©”λ‰΄μž…λ ₯였λ₯˜");
                continue;
            }
            switch(menu) {
            case LIST: listProduct();        break;
            case ADD : addProduct();         break;
            case FIND: findProduct();        break;
            case UPDATE: updateProduct();    break;
            case DELETE: deleteProduct();    break;
            case EXIT : go =false;           break;
            defaultSystem.err.println("λ©”λ‰΄μž…λ ₯였λ₯˜");
            }
        }
        System.out.println("ν”„λ‘œκ·Έλž¨ μ’…λ£Œ");
    }
    public static Menu menu() {
        System.out.println("λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)");
        System.out.println("μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.");
        Scanner kbd = new Scanner(System.in);
        String input  = kbd.nextLine().strip();
        Menu menu = null;
        switch(input) { 
        case "s" : menu = Menu.LIST;     break;
        case "a" : menu = Menu.ADD;        break;
        case "f" : menu = Menu.FIND;    break;
        case "u" : menu = Menu.UPDATE;    break;
        case "d" : menu = Menu.DELETE;     break;
        case "x" : menu = Menu.EXIT;    break;
        default : menu = null;
        }
        return menu;
    }
    public static void addProduct() {
        Scanner kbd = new Scanner(System.in);
        System.out.print("번호λ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
        int num = kbd.nextInt();
        kbd.nextLine();
        System.out.print("이름을 μž…λ ₯ν•˜μ„Έμš”.");
        String input1 = kbd.nextLine().strip();
        System.out.print("가격을 μž…λ ₯ν•˜μ„Έμš”.");
        int price = kbd.nextInt();
        kbd.nextLine();
        System.out.print("λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
        String input2 = kbd.nextLine().strip();
        
        Product prod = new Product();
        prod.setModelno(num);
        prod.setName(input1);
        prod.setPrice(price);
        prod.setDate(input2);
        product.add(prod);
    }
    public static void listProduct() {
        for(int i=0;i<product.size();i++) {
                product.get(i).printProduct();
        }
    }
    public static void findProduct() {
        Scanner kbd = new Scanner(System.in);
        System.out.print("찾을 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
        int num = kbd.nextInt();
        Product key = new Product();
        key.setModelno(num);
        if(product.indexOf(key)<0){ //λ§Œμ•½ μ—†λ‹€λ©΄ -1이 λ‚˜μ˜¨λ‹€.
            System.err.println("κ²€μƒ‰μ‹€νŒ¨");
        }
        else if(product.indexOf(key)>=0) {
            product.get(product.indexOf(key)).printProduct();        
        }
    }
    public static void updateProduct() {
        System.out.print("μˆ˜μ •ν•  λͺ¨λΈμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”.");
        Scanner kbd = new Scanner(System.in);
        String name = kbd.nextLine();
        for(int i=0;i<product.size();i++) {
            if(name.equals(product.get(i).getName())) {
                System.out.print("μˆ˜μ •ν•  λ²ˆν˜Έ, λͺ¨λΈλͺ…, κ°€κ²©, λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
                int no = kbd.nextInt();
                String input1 = kbd.next();
                int price = kbd.nextInt();
                String input2 = kbd.nextLine();
                product.set(i, new Product (no,input1,price,input2 ));
            }
        }
    }
    public static void deleteProduct() {
        System.out.print("μ‚­μ œν•  λͺ¨λΈμ˜ λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
        Scanner kbd = new Scanner(System.in);
        int num = kbd.nextInt();
        for(int i=0;i<product.size();i++) {
            if(num==product.get(i).getModelno()) {
                product.remove(i);
            }
        }    
    }
}
cs

 

Product 클래슀 μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Product 
{
    private int modelno;
    private String name;
    private int price;
    private String date;
    
    public Product() {}
    public Product(int modelno, String name, int price, String date) {
        this.setModelno(modelno);
        this.setName(name);
        this.setPrice(price);
        this.setDate(date);
    }
    public void printProduct() {
        System.out.printf("%d\t%s\t%d\t%s\n", modelno, name, price, date );
    }
    
    @Override
    public boolean equals(Object obj) {
        Product other = (Product)obj;    
        return this.modelno==other.modelno ? true : false;
    }
    public int getModelno() {
        return modelno;
    }
    public void setModelno(int modelno) {
        this.modelno = modelno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
}
cs

μ½˜μ†” κ°’:

λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
a
번호λ₯Ό μž…λ ₯ν•˜μ„Έμš”.11
이름을 μž…λ ₯ν•˜μ„Έμš”.jun
가격을 μž…λ ₯ν•˜μ„Έμš”.3000
λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.05.23
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
a
번호λ₯Ό μž…λ ₯ν•˜μ„Έμš”.12
이름을 μž…λ ₯ν•˜μ„Έμš”.bob
가격을 μž…λ ₯ν•˜μ„Έμš”.4000
λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.07.12
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
s
11 jun 3000 05.23
12 bob 4000 07.12
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
f
찾을 λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.12
12 bob 4000 07.12
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
u
μˆ˜μ •ν•  λͺ¨λΈμ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”.bob
μˆ˜μ •ν•  λ²ˆν˜Έ, λͺ¨λΈλͺ…, κ°€κ²©, λ‚ μ§œλ₯Ό μž…λ ₯ν•˜μ„Έμš”.13 paul 7000 06.17
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
s
11 jun 3000 05.23
13 paul 7000  06.17
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
d
μ‚­μ œν•  λͺ¨λΈμ˜ λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”.13
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
s
11 jun 3000 05.23
λͺ©λ‘(s), μΆ”κ°€(a), κ²€μƒ‰(f), μˆ˜μ •(u), μ‚­μ œ(d), μ’…λ£Œ(x)
μ›ν•˜λŠ” λ©”뉴λ₯Ό λˆ„λ₯΄μ„Έμš”.
x
ν”„λ‘œκ·Έλž¨ μ’…λ£Œ

λŒ“κΈ€