16장은 대학때 배웠던 자료구조를 자바에서 어떻게 갔다 쓰는지 나옴
다짜고짜 16장 첫번째 예제 돌려봄...
그냥 ArrayList 써보는 거임..;;
이번기회에 잊혀졌던 모든 자료구조를 갔다 써보자;;
첫번째...ArrayList..
Jukebox1.java
package chap16.practice;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Hashtable;
public class Jukebox1 {
ArrayList<String> songList = new ArrayList<String>();
Hashtable<String, String> songListHash = new Hashtable<String, String>(); // 얘는 그냥 심심해서 써봄
public static void main(String[] args) {
new Jukebox1().go();
}
public void go() {
getSongs();
System.out.println(songList);
System.out.println("");
System.out.println(songListHash);
}
void getSongs() {
try {
File file = new File("SongList.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null) {
addSong(line);
}
} catch (Exception e) {e.printStackTrace();}
}
void addSong(String lineToParse) {
String[] tokens = lineToParse.split("/");
songList.add(tokens[0]); //노래제목만 갔다가 출력
songListHash.put(tokens[0], tokens[1]); // 노래제목 + 가수 같이 출력
}
}
SongList.txt
Pink Moon/Nick Drake
Somersault/Zero 7
Shiva Moon/Prem Joshua
Circles/BT
Deep Channel/Afro Celts
Passenger/Headmix
Listen/Tahiti 80
16장에 나오는 자료구조들은...
ArrayList : 가장 단순함. 리스트형태로 정렬기능 없음
TreeSet : 원소들을 정렬된 상태로 유지하며 원소가 중복되지 않게 해줌
HashMap : 원소들을 이름/값 쌍으로 저장하고 접근할 수 있게 해줌
LinkedList : 컬렉션 중간에서 원소를 추가하거나 삭제하는 작업을 더 빠르게 처리할 수 있게 해줌 (ArrayList 를 써도 상관없음)
HashSet : 컬렉션에 중복된 원소가 들어가지 않도록 해주고, 컬렉션 내에서 어떤 원소를 빠르게 찾을 수 있게 해줌
LinkedHashMap : 일반 HashMap과 거의 똑같지만 원소(이름/값 쌍)가 삽입된 순서를 그대로 유지시켜 줄 수도 있고, 원소에 마지막으로 접근했던 순서를 기억하도록 설정할 수 있음