[Java] 자바에서 많이 쓰이는 자료구조(ArrayList / Hashtable)

Junseo Kim·2019년 12월 19일
0

[Java]자바 기초

목록 보기
11/35

자료구조란

  • 메모리크기는 한정적 -> 유동적으로 메모리 할당(필요할 때마다 메모리 할당) -> 비효율적인 메오리 낭비를 막을 수 있게 해줌
  • 원하는 결과를 빠르게

ArrayList

key와 value의 쌍. key값은 인덱스이고, value값은 실제 값이다. 이때 key값은 숫자만 가능하다.
기존 배열은 크기를 미리 지정하여, 메모리를 미리 할당받지만, ArrayList는 필요할 때마다 메모리를 할당받아 사용한다.
배열의 경우 값을 삭제하여도 공간은 남아있지만, ArrayList인 경우 공간도 같이 사라지므로 메모리 낭비를 막을 수 있다.

import java.util.ArrayList;를 import하여 사용

<선언>
ArrayList<데이터타입> 변수이름 = new ArrayList<데이터타입>();

ex. ArrayList<String> book = new ArrayList<String>();
String타입의 book이라는 ArrayList 선언

<값 추가>
ArrayList변수.add(값);
배열과 달리 미리 메모리공간이 확보 되어 있는 것이 아니라, add를 통해 값을 넣을 때, 메모리가 할당되면서 거기에 값을 쓴다.
인덱스를 통해 값을 넣어주는 것이 아니라, 자동으로 맨 마지막에 값을 넣어준다.

ex. book.add("harry potter");
harry potter책을 book ArrayList에 넣어줌(자동으로 제일 마지막 위치)

ex. book.add(1, "sherlock holmes");
셜록홈즈 책을 1번 인덱스 자리에 넣어준다. 1번이 비어져있는데 2번을 넣을 수는 없다.

Tip) ArrayList의 크기를 가져올때는 .size()를 사용
ex.book.size()

Tip) index로 ArrayList의 값 가져오기 & 지우기
ex. book.get(1);
1번 인덱스의 값 가져오기

ex. book.remove(1);
1번 인덱스의 값 지우기

Tip) ArrayList 모두 삭제
ex. book.clear();

Hashtable

key와 value의 쌍. key값을 무조건 숫자로 할 필요 없이, 원하는 값으로 둬도 된다.
숫자 인덱스가 없으므로, ArrayList처럼 인덱스 값으로는 value를 가져올 수 없다.

import java.util.Hashtable;을 import하여 사용

<선언>
Hashtable<key값의 데이터타입, value값의 데이터타입> 변수이름 = new Hashtable<key값의 데이터타입, value값의 데이터타입>();

ex. Hashtable<String, String> hash = new Hashtable<String, String>();
key값의 데이터 타입은 String이고, value값의 데이터 타입도 String인 Hashtable

<값 추가>
Hashtable 변수.put(key값,value값);
맨 뒤의 위치에 key-value pair가 들어간다.

ex. hash.put("wizard", "harry");
hash라는 Hashtable에 wizard(key) - harry(value) pair를 넣는다.

Tip) Hashtable의 크기를 가져올때는 .size()를 사용
ex.hash.size()

Tip) Hashtable에서 값 가져오기 & 지우기
ex. hash.get("wizard");
wizard라는 key에 해당되는 value가져오기

ex. hash.remove("wizard");
wizard라는 key에 해당되는 value 지우기

Tip) Hashtable 모두 삭제
ex. hash.clear();

Hashtable에 들어있는 모든 값 출력해보기

Set을 이용한다.
여기서 Set은 Hashtable의 key값들의 집합으로 사용한다.

ex. Set<String> keys = hash.keySet();

for문을 이용해 keys Set의 내용들을 하나씩 가져온다(foreach 형태)

for(String key: keys){ // for문이 실행될때 마다 'key'에 'keys'Set의 값들을 넣겠다.
	System.out.println(key); // keys라는 Set에 들어있는 hash의 key값을 출력
    System.out.println(hash.get(key)); //Set에 들어있는 hash의 key값을 이용하여 hash에서 value값을 출력
}

0개의 댓글