hyeonga_code

Java_68_Collection_List 본문

Java

Java_68_Collection_List

hyeonga 2023. 10. 27. 06:59
반응형


- List
    - set과 유사합니다.
    - 중복을 허용합니다.
    - 순서 있음
    - 종류
        - Vector
        - LinkedList
            - 앞, 뒤의 요소를 이용하여 현재 위치를 파악합니다.
            - 삭제/수정이 빠릅니다.    
                - 데이터 삭제 : 단 한번의 참조 변경만으로 가능합니다.
                - 데이터 추가 : 한 번의 Node 객체 생성과 두 번의 참조 변경만으로 가능합니다.
            - 불연속적으로 존재하는 데이터를 연결합니다.
        - ArrayList
            - 주고가 간단하고 데이터를 읽는 데 걸리는 시간이 짧습니다.
            - 빈칸이 없어야 하므로 성능이 좋지는 않음
            - 저장 전용으로 사용합니다.
            - .add('데이터'); _ 데이터 추가
            - .size(); _ 리스트 크기
            - .indexOf('데이터'); _ 데이터 인덱스
            - .lastindexOf('데이터');_ 마지막 데이터의 인덱스
            g:\project\class_1\업로드
- API 문서 > List 확인
    Interface List<E>
        extends Collection<E> 
        - 인터페이스는 서로 상속이 가능합니다.
        - implements 인터페이스를 구현하는 경우

    >> method
        boolean add(E e)
            - 자동으로 위치를 지정하여 저장합니다.
            - 저장되었는지에 대한 정보만을 반환합니다.
        void add(int index, E element)   > 중복 정의되었습니다.
            - 저장되는 위치를 지정할 수 있습니다.

        get(int index)
            - 지정한 위치의 데이터를 반환합니다.
        E set(int index, E element) 
            - 지정한 위치의 데이터를 다른 데이터로 변경합니다.

        E emove(int index)
            - 지정한 위치의 데이터를 삭제합니다.
            - 데이터를 삭제한 뒤 객체 타입을 반환하여 어떤 데이터를 삭제했는지 명시합니다.
        bollean remove(Object o)
            - 지정한 객체의 타입을 찾아 데이터를 삭제합니다.
            - 삭제 되었는지에 대한 정보만을 반환합니다.
=====          

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
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        
        list.add("data 1");
        list.add("data 3");
        list.add("data 2");
        list.add("data 5");
        
        System.out.println(list);
        // [data 1, data 3, data 2, data 5]
        // set과 유사하나 입력한 순서대로 결과값이 반환
        
        list.add(2"data 4");
        // list[2] 위치에 데이터를 넣고 원래 들어 있던 데이터들은 한 칸 씩 뒤로 밀림
        System.out.println(list);
        // [data 1, data 3, data 4, data 2, data 5]
                
        for (int i=0; i<list.size(); i++) {
            Object obj = list.get(i);
            String name = (String)obj;
            System.out.println(name);
        }
        
        System.out.println(list.indexOf("data 3"));    // 1
        list.add("data 3");
        System.out.println(list.lastIndexOf("data 3"));    // 5
        
        String[] name = new String[list.size()];
        list.toArray(name);
        for (int i=0; i<name.length++i) {
            System.out.println(name[i]);
        }
        
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
            String name = (String)obj;
            System.out.println(name);    
            /*
             data 1
              data 3
             data 4
              data 2
             data 5
             data 3
             */
        }
        
        // list.remove("data 2");
        list.remove(3);
        System.out.println(list);    // [data 1, data 3, data 4, data 5, data 3]
    }
}




 - 이름, 국어 영어점수를 입력받아 저장
<sungjuk>  >  'SungJuk'
=====

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
package sungjuk;
 
public class SungJuk {
    private String name;
    private int kor;
    private int eng;
    protected int tot;
    private int rank;
    public SungJuk(String name, int kor, int eng){
        this.name = name;
        this.kor = kor;
        this.eng = eng;
        this.tot = kor + eng;
    }
    public String getName() {
        return name;
    }
    public void setKor(int kor) {
        this.kor = kor;
    }
    public int getKor() {
        return kor;
    }
    public void setEng(int eng) {
        this.eng = eng;
    }
    public int getEng() {
        return eng;
    }
    public void setTot() {
        tot = kor + eng;
    }
    public int getTot() {
        return tot;
    }
    public int getRank() {
        return rank;
    }
    
    public void clearRank() {
        rank = 1;
    }
    public void plusRank() {
        rank++;
    }
    
    void disp() {
        System.out.println(name+"님의 총점은 " + tot +"점이고, 순위는 " + rank+"등 입니다.");
    }
}






<sungjuk>  >  'SungJukPro'
=====

1
2
3
4
5
6
7
8
9
package sungjuk;
 
public interface SungJukPro {
    public void input();
    public void view();
    public void edit();
    public void delete();
    public void exit();
}




<sungjuk>  >  'SungJukProImpl'
=====

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
package sungjuk;
import java.util.*;
 
public class SungJukProImpl implements SungJukPro{
    private ArrayList list;
    private Scanner in;
    
    public SungJukProImpl() {
        list = new ArrayList();
        in = new Scanner(System.in);
    }
    @Override
    public void input() {
        System.out.print("이름을 입력 : ");
        String name = in.next();
        System.out.print("국어점수를 입력 : ");
        int kor = in.nextInt();
        System.out.print("영어점수를 입력 : ");
        int eng = in.nextInt();
        SungJuk sj = new SungJuk(name, kor, eng);
        list.add(sj);
    }
    
    protected SungJuk isName(String name) {
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
            SungJuk sj = (SungJuk)obj;
            if (sj.getName().equals(name)) {
                return sj;
            }
        }
        return null;
    }
    
    protected void rank() {
        for(int i=0; i<list.size(); ++i) {
            Object obj1 = list.get(i);
            SungJuk sj1 = (SungJuk)obj1;
            sj1.clearRank();
            for(int j=0; j<list.size(); ++j) {
                Object obj2 = list.get(j);
                SungJuk sj2 = (SungJuk)obj2;
                if (sj1.getTot() < sj2.getTot()) {
                    sj1.plusRank();
                }
            }    
        }
    }
 
    @Override
    public void view() {
        rank();
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
            SungJuk sj = (SungJuk)obj;
            sj.disp();
        }
    }
 
    @Override
    public void edit() {
        System.out.print("수제할 회원의 이름 : ");
        String name = in.next();
        SungJuk sj = isName(name);
        if (sj == null) {
            System.out.println(name+"님은 저희 학생이 아닙니다.");
        }else {
            System.out.println("현재 "+name+"님의 국어점수는 " + sj.getKor()+"점 입니다.");
            System.out.print("수정하실 국어점수 : ");
            sj.setKor(in.nextInt());
            System.out.println("현재 "+name+"님의 영어점수는 " + sj.getEng()+"점 입니다.");
            System.out.print("수정하실 영어점수 : ");
            sj.setEng(in.nextInt());
            sj.setTot();
            System.out.println(name+" 학생의 정보를 수정하였습니다.");
        }        
    }
 
    @Override
    public void delete() {
        System.out.print("삭제할 학생의 이름 : ");
        String name = in.next();
        SungJuk sj = isName(name);
        if (sj == null) {
            System.out.println(name+"님은 저희 학생이 아닙니다.");
        }else {
            System.out.println(name+"학생을 삭제합니다.");
            list.remove(sj);
        }
    }
 
    @Override
    public void exit() {
        System.out.println("프로그램을 종료합니다.");
        System.exit(0);        
    }
}





<sungjuk>  >  'SungJukMain'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package sungjuk;
import java.io.IOException;
 
public class SungJukMain {
    public static void main(String[] args) throws IOException{
        SungJukPro pro = new SungJukProImpl();
        
        while(true) {
            System.out.print("1.입력 2.출력 3.수정 4.삭제 5.종료 : ");
            int select = System.in.read() - 48;
            System.in.skip(5);
            switch(select) {
            case 1 : pro.input(); break;
            case 2 : pro.view(); break;
            case 3 : pro.edit(); break;
            case 4 : pro.delete(); break;
            case 5 : pro.exit(); break;
            default : System.out.println("잘못입력하셨습니다."); 
            }
        }
    }
}
반응형

'Java' 카테고리의 다른 글

Java_70_네트워크  (0) 2023.10.28
Java_69_Assertion_단언  (0) 2023.10.27
Java_67_Collection_Map  (0) 2023.10.27
Java_66_Collection_Set, List, Queue, Map  (0) 2023.10.26
Java_65_Generic_제네릭  (0) 2023.10.26