Ниже я наклеил весь code
.
Для каждой строки текста в dvdinfo.txt, которую мы читаем, мы создаем новый экземпляр класса DVDInfo и сохраняем его в ArrayList. На данный момент учтите, что этот класс не реализует никакого интерфейса и в основном методе не использует какой-либо метод сортировки. Таким образом, в соответствии с этими критериями, когда мы печатаем dvdList
arraylist, он распечатывает все, как в файле, без сортировки. Мое первое сомнение заключается в том, что новый экземпляр, хранящийся в ArrayList, правильно печатает текст, в то время как мы не использовали какой-либо метод получения для сохранения текста в том виде, в котором он находится в ArrayList.
Теперь рассмотрим весь код, который реализует сопоставимый интерфейс и collections.sort () в main.
The compareTo() method returns an int with the following characteristics:
* negative if thisObject < anotherObject
* zero If thisObject == anotherObject
* positive If thisObject > anotherObject
Wrote in SCJP by Kathy/Bates
В приведенном ниже коде он реализует метод compareTo (). Как происходит вызов этого compareTo () из sort и как этот int values
полезен для метода sort для сортировки объектов. Как это работает, когда мы сравниваем с ним только титровальный объект и как происходит сортировка. Как этот файл collections.sort (dvdlist) совместно работает с методом compareTo ()?
dvdinfo.txt
Donnie Darko/sci-fi/Gyllenhall, Jake
Raiders of the Lost Ark/action/Ford, Harrison
2001/sci-fi/??
Caddy Shack/comedy/Murray, Bill
Star Wars/sci-fi/Ford, Harrison
Lost in Translation/comedy/Murray, Bill
Patriot Games/action/Ford, Harrison
MyDVD.java
import java.util.*;
import java.io.*;
class DVDInfo implements Comparable<DVDInfo>{
String title;
String genre;
String leadActor;
DVDInfo(String t, String g, String a){
title = t; genre = g; leadActor = a;
}
public String toString(){
return title + " " + genre + " " + leadActor + "\n";
}
public int compareTo(DVDInfo d){
return title.compareTo(d.getTitle());
}
public String getTitle(){
return title;
}
public String getGenre(){
return genre;
}
public String getLeadActor(){
return leadActor;
}
public void setTitle(String t){
title = t;
}
public void setGenre(String g){
genre = g;
}
public void setLeadActor(String l){
leadActor = l;
}
}
public class MyDVD{
public static void main(String[] args){
ArrayList<DVDInfo> dvdList = new ArrayList<DVDInfo>();
populateList(dvdList);
Collections.sort(dvdList);
System.out.println(dvdList);
}
public static void populateList(ArrayList<DVDInfo> dvdList){
try{
File file = new File("dvdinfo.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null){
String[]tokens = s.split("/");
dvdList.add(new DVDInfo(tokens[0],tokens[1],tokens[2]));
}
br.close();
}catch(IOException e){System.out.println("File doesn\'t exist");}
}
}
Вывод:
[2001 sci-fi ??
, Caddy Shack comedy Murray, Bill
, Donnie Darko sci-fi Gyllenhall, Jake
, Lost in Translation comedy Murray, Bill
, Patriot Games action Ford, Harrison
, Raiders of the Lost Ark action Ford, Harrison
, Star Wars sci-fi Ford, Harrison
]