1) 배열
배열: 크기 고정
int [] arr;
arr = new int[5]; // 크기가 결정된 후에만 사용할 수 있다.
배열은 자료 추가시 인덱스를 직접 이용함 (예시: arr[0] 14; )
2) JavaCollectionFramework
오늘 배울 자료구조 정리
(UML표기법 사용)
-인터페이스의 상위는 인터페이스일 수 밖에 없다.
- JavaCollectionFramework : 크기조절가능
Collection : 값(value)만 저장
Map: 키와 값을 같이 저장 (빠르게 값을 찾기(검색 하기) 위해서 키를 저장한다) / 키는 (다른값과)중복되면 안됨! (고유해야함) , 인덱스 제공 안됨
List: 배열과 비슷하게 생겼음. 인덱스가 제공이 됨. 중복저장 가능 (인덱스가 제공되기 때문에 중복 저장이 가능하다. 쉽게 말하면 각 방에 같은 데이터를 중복 저장할 수 있다.예시: 1번방 3번방에 둘다 1이 들어갈 수 있음.), 순차 저장 가능
Set: 인덱스가 제공되지 않음. (예시: 에코백 (지퍼x)) 중복X, 순차X
Vector: 스레드 동기화 됨 (동기화: 자물쇠로 잠금다고 생각하면 됨) , 처리속도가 ArrayList보다 느림(추가, 수정, 삭제 등의 속도)
ArrayList: 스레드 동기화 안됨, 처리속도가 Vector보다 느림(추가, 수정, 삭제 등의 속도)
HashSet: HashcCode 값으로 검색
TreeSet: (Tree가 붙어있으면 정렬되어 있다고 생각하기), 정렬
- 자료구조형 라이브러리는 메소드를 통해 자료 추가, 수정 삭제한다.
- 대표메서드: add() - 값을 저장, size() - 저장된 자료의 개수(요소)만 반환, remove() - 자료삭제
List : get() 사용 (예시) list.get(0); (0번 인덱스의 값을 반환한다) (인덱스가 있기 때문에 list.remove(0); list.remove(□); 이런거 가능)
set: 자료 검색할 때, 인덱스가 없기때문에 하나하나씩 다 조회해야 한다. iterator() 사용 - 값을 검색할 때 사용
Map:인덱스가 없음. 키- 식별가능(고유해야함. 절대 중복되면 안됨. 만약 키 중복시 밸류를 덮어쓰게 됨), 중복x, 순차x,
hash가 붙은 것들은 'hashcode'로 검색한다. hash table hash map - hash code키로 검색
TreeMap: 정렬.
대표메서드 정리
put() - 키와 벨류 추가, remove() - 삭제, size() - 자료의 개수 반환, get() - 자료 가져옴
인자값이 모두 키가 들어감.
3) 수업시간 소스코드
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.stream.Stream;
public class JCFTest {
public static void m(Collection c) {
c.add("one");
c.add(2);
c.add(true);
c.add(new String("one"));
c.add(4.0F);
System.out.println("자료수: " + c.size());
System.out.println(c); // c.toString()자동호출됨
// Iterator it = c.iterator();
// while (it.hasNext()) {
// System.out.println(it.next());
// }
// for (Object o : c) {
// System.out.println(o);
// }
Stream st = c.stream();
st.forEach(System.out::println);
}
public static void m(Map m) {
m.put("one", "first");
m.put(2, "second");
m.put(true, "third");
m.put(new String("one"), "fourth");
m.put(4.0F, "fifft");
System.out.println("자료수:" + m.size());
System.out.println(m);
Object value = m.get("one");
System.out.println("key:one,value:" + value);
// Set keys = m.keySet();
// Iterator it = keys.iterator();
// while (it.hasNext()) {
// Object key = it.next();
// Object value2 = m.get(key);
// System.out.println("key:" + key + ",value:" + value2);
// }
for (Object key : m.keySet()) {
Object value2 = m.get(key);
System.out.println("key:" + key + ",value:" + value2);
}
}
public static void main(String[] args) {
Collection c;
c = new ArrayList();
m(c);
c = new HashSet();
m(c);
Map m;
m = new HashMap();
m(m);
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
4) 코드연습
package basic;
class Student {
private String major;
private int num;
String getMajor() {
return major;
}
int getNum() {
return num;
}
void setMajor(String major) {
this.major = major;
}
void setNum(int num) {
this.num = num;
}
}
public class StudentTest {
public static void main(String[] args) {
Student stu = new Student();
stu.setMajor("중국학");
stu.setNum(15);
System.out.println("major:" + stu.getMajor());
System.out.println("number" + stu.getNum());
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
'JAVA 수업 > java 수업 기록' 카테고리의 다른 글
0602 수업 내용 (0) | 2023.06.02 |
---|---|
코드 분석 (0) | 2023.06.01 |
0531 수업 내용 (0) | 2023.05.31 |
0530 수업 내용 (0) | 2023.05.30 |
0529 공부 (0) | 2023.05.29 |