//Sorting userDefined object from ArrayList<>...
import java.io.*;
import java.util.*;
class Song implements Comparable<Song>{
String title;
String movie;
String rating;
public int compareTo(Song s){
//System.out.println(getTitle()+" "+s.getTitle());
/*The upper comment is for testing purpose,
*because i wanted to see whats the value getTitle() compares..
*but i couldn't understand.
*/
return getTitle().compareTo(s.getTitle());
}
public Song(String t, String m, String r){
//R.I.P. Naming Convention.
title = t;
movie = m;
rating = r;
}
public String getTitle(){
return title;
}
public String toString(){
return title;
}
}
class ArrayListDemo{
ArrayList<Song> songsList = new ArrayList<Song>();
public static void main(String[] args){
new ArrayListDemo();
}
public ArrayListDemo(){
getSongs();
System.out.println(songsList);
Collections.sort(songsList);
System.out.println(songsList);
}
public void getSongs(){
try{
File file = new File("SongsList.txt");
//check below for SongsList.txt
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null){
addSong(line);
}
} catch(IOException e){
e.printStackTrace();
}
}
public void addSong(String lineToParse){
String[] token = lineToParse.split("/");
Song nextSong = new Song(token[0], token[1], token[2]);
songsList.add(nextSong);
}
}
SongsList.txt
Soch Na Sake/Airlift/9.1
Jeena/Badlapur/8.7
Tere Sang Yaara/Rustom/8.8
Aayat Ki Tarah/BaajiravMastaani/7.9
Ikk Kudi/UdtaPunjab/7.5
Tay Hai/Rustom/7.8
Output:-
Before Sorting...
[Soch Na Sake , Jeena , Tere Sang Yaara , Aayat Ki Tarah , Ikk Kudi , Tay Hai ]
After Sorting...
[Aayat Ki Tarah , Ikk Kudi , Jeena , Soch Na Sake , Tay Hai , Tere Sang Yaara ]
주의 - 초보자 영어 전진 !!!title.compareTo (a.title())의 장면을 이해하는 데 도움이됩니다. codeInside
그래서 내 프로그램의 작동하고 ... 참조 : -HeadFirstJava 2, JukeBox3 페이지 아뇨 550
그래서 문제에오고 ..
나는 그들의 대부분을 이해 ... 그러나 이것은 OO .. 내 마음이 롤링되는 경우public int compareTo(Song s){
return getTitle().compareTo(s.getTitle());
}
인 getTitle() & s.getTitle()
입니다210 getTitle() 값을 가져 와서 비교 ... 좋아, 그 compareTo() 비교 문자열을 알고 있지만 또한 -1,0,1 (<, =) 규칙, 것을 알고 나를 크랙킹하는 것은 getTitle()이 값을 얻는 곳에서 시작됩니다. 및 한 가지 더 ... 책에 쓰여 있듯이 ...Collections.sort (songsList);
이 메서드가 호출되면 sort 메서드는 songsList에서 compareTo() 메서드로 요소를 보냅니다. ..e sort()가 보낸 요소의 s.getTitle() = title을 의미합니다. 권리 ?
그러나 첫 번째 getTitle()은 반환 후 .compareTo() 앞에있는 값을 가져옵니다. 친절하게 나를 여기에 도움이
는 어디에있는() 인 getTitle 값 비교 얻는 것을 내가 알고 싶은 간단한 단어에서 문서, 다른 답변, 지난 2 일에 내가 할 수있는 모든 ....를 확인했습니다.
* "getTitle()이 값을 가져 오는 곳"* compareTo가 호출 된 인스턴스에서 마치'return this.getTitle(). compareTo (s) .getTitle());'('this.'에주의하십시오.) –
나는 네가 말한 것을 가지고있다. 그러나 내가 분명치 않은 것은 this.getTitle()이 값을 얻는 곳에서 나온 것인가? 나는 this.getTitle()의 값을 출력했다. 그리고 그것은 songsList의 두 번째 요소의 제목이었습니다. –