Post

[Java] ArrayList

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ArrayList๋ฅผ ํ™œ์šฉํ•ด ๊ฐ„๋‹จํ•œ ํšŒ์›๊ฐ€์ž…ยท๋กœ๊ทธ์ธ ์‘์šฉ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณธ๋‹ค. ์•„์ด๋”” ์ค‘๋ณต ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”๊นŒ์ง€ ๋„ฃ์–ด, ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ํ•˜๋‚˜๋กœ ์—ฎ์–ด๋ณด์ž.

์™œ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ ArrayList? ์ผ๋ฐ˜ ๋ฐฐ์—ด์€ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •์ด์ง€๋งŒ, ArrayList๋Š” ์ถ”๊ฐ€ยท์ˆ˜์ •ยท์‚ญ์ œ๊ฐ€ ์ž์œ ๋กญ๋‹ค. ํšŒ์›์ด ๋Š˜๊ณ  ์ฃผ๋Š” ์ƒํ™ฉ์— ์ ํ•ฉํ•˜๋‹ค.

์ „์ฒด ๊ตฌ์กฐ๋Š” ์„ธ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆˆ๋‹ค.

ํด๋ž˜์Šค์—ญํ• 
UserํšŒ์› ๋ฐ์ดํ„ฐ(id, pw)๋ฅผ ๋‹ด๋Š” ๊ฐ์ฒด
UserFieldDB(ArrayList) + ์ค‘๋ณต๊ฒ€์‚ฌยท์•”ํ˜ธํ™”ยทํšŒ์›๊ฐ€์ž…ยท๋กœ๊ทธ์ธ ๋กœ์ง
UserMain์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ์ง„์ž…์ 

1. User ํด๋ž˜์Šค โ€” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด

id์™€ pw๋งŒ ๋‘๊ณ , private ํ•„๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์™€ Getter/Setter๋ฅผ ๋งŒ๋“ ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
package day16;

public class User {
    private String id;
    private String pw;

    public User() {}

    public String getId()          { return id; }
    public void   setId(String id) { this.id = id; }
    public String getPw()          { return pw; }
    public void   setPw(String pw) { this.pw = pw; }
}

2. UserField ํด๋ž˜์Šค โ€” ๋กœ์ง ๋ชจ์Œ

DB (ArrayList)

1
2
ArrayList<User> users = new ArrayList<>();   // User ๊ฐ์ฒด๋“ค์„ ์ €์žฅ
Scanner sc = new Scanner(System.in);

์•„์ด๋”” ์ค‘๋ณต๊ฒ€์‚ฌ

1
2
3
4
5
6
7
8
9
public User checkId(String id) {
    User user = null;
    for (int i = 0; i < users.size(); i++) {
        if (users.get(i).getId().equals(id)) {
            user = users.get(i);   // ์ค‘๋ณต์ด๋ฉด ๊ทธ ๊ฐ์ฒด ๋ฐ˜ํ™˜
        }
    }
    return user;                   // ์ค‘๋ณต ์—†์œผ๋ฉด null ๋ฐ˜ํ™˜
}

๐Ÿ’ก ์ค‘๋ณต์ด๋ฉด ํ•ด๋‹น User ๊ฐ์ฒด๋ฅผ, ์—†์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด ๋ฐ˜ํ™˜๊ฐ’์„ ๋กœ๊ทธ์ธยทํšŒ์›๊ฐ€์ž… ์–‘์ชฝ์—์„œ ํ™œ์šฉํ•œ๋‹ค.

์•”ํ˜ธํ™” (๋‹จ๋ฐฉํ–ฅ)

1
2
3
4
5
6
7
public String encrypt(String pw) {
    String en_pw = "";
    for (int i = 0; i < pw.length(); i++) {
        en_pw += (char)pw.charAt(i) * 3;   // ์•„์Šคํ‚ค์ฝ”๋“œ ร— 3
    }
    return en_pw;
}

โš ๏ธ pw๋ฅผ ํ‰๋ฌธ์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ์žˆ์–ด, ๊ฐ„๋‹จํžˆ ์•„์Šคํ‚ค์ฝ”๋“œ ร— 3์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”ํ–ˆ๋‹ค. (์‹ค๋ฌด์—์„œ๋Š” BCrypt ๋“ฑ ๊ฒ€์ฆ๋œ ํ•ด์‹œ๋ฅผ ์จ์•ผ ํ•œ๋‹ค.)

ํšŒ์›๊ฐ€์ž…

1
2
3
4
public void makeId(User user) {
    user.setPw(encrypt(user.getPw()));   // ์•”ํ˜ธํ™”ํ•œ pw๋กœ ๊ต์ฒด
    users.add(user);                     // ArrayList์— ์ถ”๊ฐ€
}

๐Ÿ’ก ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋ชฐ์•„๋„ฃ์ง€ ๋ง์ž. ์ค‘๋ณต๊ฒ€์‚ฌ๋Š” ๋ณ„๋„ ๋ฉ”์†Œ๋“œ๋กœ ๋นผ๊ณ , ํšŒ์›๊ฐ€์ž…์€ โ€œ์•”ํ˜ธํ™” + ์ถ”๊ฐ€โ€๋งŒ ๋‹ด๋‹นํ•˜๊ฒŒ ํ–ˆ๋‹ค.

๋กœ๊ทธ์ธ

1
2
3
4
5
6
7
8
9
public boolean logIn(String id, String pw) {
    User user = checkId(id);                       // ์•„์ด๋”” ์กด์žฌ ํ™•์ธ
    if (user != null) {                            // ์žˆ์–ด์•ผ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅ
        if (user.getPw().equals(encrypt(pw))) {    // ์•”ํ˜ธํ™” ํ›„ ๋น„๊ต
            return true;
        }
    }
    return false;
}

3. UserMain ํด๋ž˜์Šค โ€” ์‹คํ–‰

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
package day16;

public class UserMain {
    public static void main(String[] args) {
        UserField uf = new UserField();
        User newUser = new User();

        User checkUser = uf.checkId("easydong02");   // โ‘  ์ค‘๋ณต ๊ฒ€์‚ฌ

        if (checkUser == null) {                     // ์—†์œผ๋ฉด ๊ฐ€์ž…
            System.out.println("์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋””");
            newUser.setId("easydong02");
            newUser.setPw("1234");
            uf.makeId(newUser);
            System.out.println("ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต!");
        } else {
            System.out.println("์ค‘๋ณต๋œ ์•„์ด๋””");
        }

        checkUser = uf.checkId("easydong02");        // โ‘ก ๊ฐ™์€ ์•„์ด๋”” ์žฌ๊ฒ€์‚ฌ

        if (checkUser == null) {
            System.out.println("์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋””");
        } else {
            System.out.println("์ค‘๋ณต๋œ ์•„์ด๋””");     // ์ด๋ฒˆ์—” ์ค‘๋ณต!
        }
    }
}

๋™์ž‘ ํ๋ฆ„์€ ์ด๋ ‡๋‹ค.

1
2
โ‘  easydong02 ๊ฒ€์‚ฌ โ†’ ์—†์Œ โ†’ ๊ฐ€์ž… โ†’ "์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋””" + "ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต!"
โ‘ก easydong02 ์žฌ๊ฒ€์‚ฌ โ†’ ์ด๋ฏธ ์žˆ์Œ โ†’ "์ค‘๋ณต๋œ ์•„์ด๋””"

Desktop View

์ถœ๋ ฅ ๊ฒฐ๊ณผ: โ€œ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋””โ€ โ†’ โ€œํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต!โ€ โ†’ โ€œ์ค‘๋ณต๋œ ์•„์ด๋””โ€ ์„ธ ๋ฌธ์žฅ์ด ์ž˜ ๋‚˜์˜จ๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
ArrayList ํšŒ์› ๊ด€๋ฆฌ
โ”œโ”€ User       ๋ฐ์ดํ„ฐ ๊ฐ์ฒด (id, pw + Getter/Setter)
โ”œโ”€ UserField  DB(ArrayList) + checkId ยท encrypt ยท makeId ยท logIn
โ””โ”€ UserMain   ์‹คํ–‰: ๊ฐ€์ž… โ†’ ์žฌ๊ฒ€์‚ฌ๋กœ ์ค‘๋ณต ํ™•์ธ
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
ArrayListํฌ๊ธฐ๊ฐ€ ์œ ๋™์ ์ธ ๋ฆฌ์ŠคํŠธ (add/get/size)
์—ญํ•  ๋ถ„๋ฆฌํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก
๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋ณต์› ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ pw๋ฅผ ๋ณ€ํ˜•

ํšŒ์›๊ฐ€์ž…ยท๋กœ๊ทธ์ธ์ด ์ฒ˜์Œ์—” ์–ด๋ ค์›Œ ๋ณด์˜€์ง€๋งŒ, ๋ฐฐ์šด ๊ฒƒ๋“ค(ํด๋ž˜์ŠคยทArrayListยท๋ฉ”์†Œ๋“œยท์กฐ๊ฑด๋ฌธ)์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์กฐํ•ฉํ•˜๋‹ˆ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ๋ณธ์ธ์ธ์ฆยท๋น„๋ฐ€๋ฒˆํ˜ธ ๊ทœ์น™ ๋“ฑ์ด ๋”ํ•ด์ง€์ง€๋งŒ, ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์€ ์ด์™€ ๊ฐ™๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.