본문 바로가기
JAVA 수업/java 수업 기록

0601 수업 내용

by 예림220 2023. 6. 1.

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() - 자료 가져옴 

인자값이 모두 키가 들어감.  

 

출처: 자바의 자료구조 (velog.io)

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