1. SongList.txt
Pink Moon/Nick Drake/5/80
Somersault/Zero 7/4/84
Shiva Moon/Prem Joshua/6/120
Circles/BT/5/110
Deep Channel/Afro Celts/4/120
Passenger/Headmix/4/100
Listen/Tahiti 80/5/90
2. Song.java
package test;
class Song implements Comparable<Song> {
String title;
String artist;
String rating;
String bpm;
public int compareTo(Song s) {
// TODO Auto-generated method stub
return title.compareTo(s.getTitle());
}
Song(String t, String a, String r, String b) {
title = t;
artist = a;
rating = r;
bpm = b;
}
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public String getRating() {
return rating;
}
public String getBpm() {
return bpm;
}
public String toString() {
return title;
}
}
===============================================================================
1. JukeBox1 : 타이틀로 정렬(String 을 이용)
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.*;
import java.io.*;
public class JukeBox1 {
ArrayList songList = new ArrayList();
public static void main(String[] args) {
new JukeBox1().go();
}
public void go() {
getSong();
System.out.println(songList);
System.out.println("====This starts Sorting ==== ");
Collections.sort(songList);
System.out.println(songList);
}
public void getSong() {
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();
}
}
public void addSong(String lineToParse) {
String[] tokens = lineToParse.split("/");
songList.add(tokens[0]);
}
}
===============================================================================
[ 설 명 ]
객체를 이용한 정렬 sort() 메소드에서는 Comparable 객체로 구성된 목록만 받아들일 수 있습니다.
ArrayList<Song>을 낷() 메소드에 전달하려면Song 클래스에서 Comparable을 구현 해야만 합니다.
sort() 메소드가 그런 식으로 정의되어 있으니깐. API 문서를 살펴보면 COmparable 인터페이스가 메소드
한 개만 구현하면 되는 간단한 인터페이스라는 것을 알 수 있습니다.
public interface Comparable<T> {
int compareTo(T o);
}
여기서는
class Song implements Comparable<Song> {
public int compareTo(Song s) {
return title.compareTo(s.getTitle());
}
~~~
}
===============================================================================
2. JukeBox3 : 타이틀로 정렬(Song 객제 이용)
package test;
import java.util.*;
import java.io.*;
public class Jukebox3 {
ArrayList<Song> songList = new ArrayList<Song>();
public static void main(String[] args) {
Jukebox3 jukebox = new Jukebox3();
jukebox.go();
}
public void go() {
getSongs();
System.out.println(songList);
System.out.println("====This starts Sorting ==== ");
Collections.sort(songList);
System.out.println(songList);
}
void getSongs(){
try{
File file = new File("./SongList.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null){
this.addSong(line);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
void addSong(String lineToParase){
String[] tokens = lineToParase.split("/");
Song nextSong = new Song(tokens[0],tokens[1],"","");
songList.add(nextSong);
}
}
3. Jukebox5 : 아티스트로 정렬 한 노래제목(Song 객제 이용)
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Jukebox5 {
ArrayList songList = new ArrayList();
public static void main(String[] args){
new Jukebox5().go();
}
class ArtistCompare implements Comparator<Song> {
public int compare(Song one, Song two) {
return one.getArtist().compareTo(two.getArtist());
}
}
public void go(){
getSongs();
System.out.println("가 "+songList+" ");
Collections.sort(songList);
System.out.println("나 "+songList+"");
ArtistCompare artistCompare = new ArtistCompare();
Collections.sort(songList, artistCompare);
System.out.println("다 "+songList+"");
}
void getSongs(){
try{
File file = new File("./SongList.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null){
this.addSong(line);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
void addSong(String lineToParase){
String[] tokens = lineToParase.split("/");
Song nextSong = new Song(tokens[0],tokens[1],"","");
songList.add(nextSong);
}
}
'Java' 카테고리의 다른 글
Collection Framework (0) | 2008.07.31 |
---|---|
HashSet 를 Collection.sort() 을 이용한 정렬방법 (0) | 2008.07.25 |
자바 Tip & Tuning Technic (0) | 2007.08.09 |
JAR 파일 포맷의 힘 (0) | 2007.06.15 |
개발자가 놓치기 쉬운 자바의 기본원리 (0) | 2007.06.15 |