hyeonga_code
Java_68_Collection_List 본문
- 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 |