ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] HeadFirst 16장 : TreeSet
    JAVA 2012. 2. 29. 17:33


    자료구조를 정렬된 상태로 유지시키고 싶다면 TreeSet을 쓰면된다.
    * 한가지 중요한건...정렬할때 Song에 어떤 멤버변수로 비교할지 기준을 정해야 하기때문에 마찬가지로 제네릭으로 들어가는 클래스는 Comparable을 implements 해서 compareTo() 메소드를 구현해야한다.

    public class Jukebox8 {
     ArrayList<Song> songList = new ArrayList<Song>();
     int val;
     
     public static void main(String[] args) {
      new Jukebox8().go();
     }
     
     public void go() {
      getSongs();
      System.out.println(songList);
      Collections.sort(songList);
      System.out.println(songList);
      TreeSet<Song> songSet = new TreeSet<Song>();
      songSet.addAll(songList);
      System.out.println(songSet);
     }
     
     void getSongs() {
      try {
       File file = new File("SongListMore.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("/");
      Song nextSong = new Song(tokens[0], tokens[1], tokens[2], tokens[3]);
      songList.add(nextSong);
     }
    }



    아래 세번재 줄처럼 중복도 없고..정렬까지 되어 나온다...다만 항상 정렬상태를 유지하기 때문에 약간의 성능저하가 있다.

    [Pink Moon, Somersault, Shiva Moon, Circles, Deep Channel, Passenger, Listen, Listen, Listen, Circles]
    [Circles, Circles, Deep Channel, Listen, Listen, Listen, Passenger, Pink Moon, Shiva Moon, Somersault]
    [Circles, Deep Channel, Listen, Passenger, Pink Moon, Shiva Moon, Somersault]


Designed by Tistory.