hyeonga_code
Java_65_Generic_제네릭 본문
- Generic
- 필요한 데이터의 자료형을 선언합니다.
- 클래스/메소드에 데이터 타입을 매개 변수로 넘겨줄 수 있습니다.
- 참조형 데이터 타입만 가능합니다.
ArrayList<String>
-업 캐스팅을 하지 않아도 자료형을 알고 있으므로 바로 꺼내올 수 있음
String name = list.get(i);
-list 타입의 Collection = index로 데이터 꺼내서 사용 가능
for (Object obj : list) {
// 확장 for 문
String name = (Strong)obj;
System.out.println(name);
}
>>> jdk 1.4
add(Object o) : 모든 객체를 등록이 가능한 메소드입니다.
get() : Object : 반환타입이 Object이므로 항상 형변환이 필요했습니다.
>>> jdk 1.5
- generic 추가되었습니다.
- 지정하는 Element 타입으로 반환합니다.
add(E e)
get() : E
- E : Element Object _ 지정한 객체의 타입
- K : Key Object _ 지정한 키 값
- V : Value Object _ 지정한 값의 오브젝트
- T : Type Object _ 지정한 타입
'adv.collection_ex' 패키지 생성
'ListEx.java' 클래스 생성
=====
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
|
package adv.collection_ex;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListEx {
public static void main(String[] args) {
// List
List<Integer> array_list = new ArrayList();
// Integer형 데이터를 저장하는 리스트를 선언합니다.
/*
> Generic_제네릭 = 일반화
List< ? >
- 리스트에 받을 데이터의 타입을 지정해야합니다.
- 클래스/메소드에 데이터 타입을 매개 변수로 보낼 수 있습니다.
- 참조형 데이터 타입만 가능합니다.
*/
for(int i=1; i<=5; i++) {
array_list.add(i); // 데이터를 추가할 때마다 크기가 늘어납니다.
}
for(Integer arr : array_list) {
System.out.println("arr[" + arr + "] : " + arr);
}
// 리스트 크기
System.out.println("array_list.size() : " + array_list.size());
/* array_list.size() : 5 */
// 데이터 인덱스
System.out.println("array_list.indexOf(3) : " + array_list.indexOf(3));
/* array_list.indexOf(3) : 2 */
// 데이터 수정
array_list.set(0, 7); // array_list[0] 데이터를 7로 변경합니다.
for(Integer arr : array_list) {
System.out.print(arr);
}
/* 72345 */
System.out.println();
// 데이터 삭제
array_list.remove(3); // array_list[3] 데이터를 삭제합니다.
for(Integer arr : array_list) {
System.out.print(arr);
}
System.out.println();
/* 7235 */
// 데이터 전체 삭제
array_list.clear(); // array_list 모든 데이터를 삭제합니다.
// 리스트 연결
List<Integer> linked_list = new LinkedList<>(); // 사용법은 ArrayList와 동일합니다.
linked_list.add(1);
System.out.println(linked_list);
/* [1] */
}
}
|
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.*;
public class ex0325 {
public static void main(String[] args) {
Hashtable<String, String> map = new Hashtable<>();
map.put("data 1", "type 1");
map.put("data 2", "type 2");
map.put("data 3", "type 3");
map.put("data 4", "type 4");
map.put("data 5", "type 5");
Enumeration<String> enu = map.keys();
// 키 값 모두 가져오기
while(enu.hasMoreElements()) {
String key = enu.nextElement();
String value = map.get(key);
System.out.println(key + " : " + value);
}
}
}
|
=====
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
|
package sungjuk;
import java.util.*;
public class SungJukProImpl implements SungJukPro{
private ArrayList<SungJuk> list;
// SungJuk으로 Generic
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) {
for (SungJuk sj : list) {
if (sj.getName().equals(name)) {
return sj;
}
}
return null;
/*
* 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 (SungJuk sj1 : list) {
sj1.clearRank();
for (SungJuk sj2 : list) {
if (sj1.getTot() < sj2.getTot()) {
sj1.plusRank();
}
}
}
}
@Override
public void view() {
rank();
for(SungJuk sj : list) {
sj.disp();
}
/*
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);
}
}
|
'Java' 카테고리의 다른 글
Java_67_Collection_Map (0) | 2023.10.27 |
---|---|
Java_66_Collection_Set, List, Queue, Map (0) | 2023.10.26 |
Java_64_Stream_Byte 입출력 (0) | 2023.10.26 |
Java_63_Scanner (0) | 2023.10.25 |
Java_62_Calendar 클래스, 날짜 클래스 (0) | 2023.10.25 |