文件排序 - 项目类型 - Java
File Sorting - Item Types - Java
对Java编程相当陌生,并且最近构建了一个应用程序,该应用程序从用户那里输入电影、书籍或歌曲的标题(来自单选按钮)并将其打印到文本文件中,例如这个:
Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51
Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28
那么,我想问的是如何在文本文件中按电影、音乐或书籍排序?
我希望能够在程序结束时(我为 UI 使用 JFrame 和 JPanel),它会将电影、音乐和书籍排序到一个列表中。
我不仅希望获得实际答案的代码示例,还希望获得有关其功能和工作原理的教程。
So, what I'm asking is how do I sort by Movies, Music or Books in the Text File?
基本上,你不需要。您将值加载到内存中,在那里对它们进行排序,然后将它们保存回文件中。
List<String> values = new ArrayList<String>(25);
values.add("Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39");
values.add("Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51)");
values.add("Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M");
values.add("Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06");
values.add("Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13");
values.add("Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28");
Collections.sort(values, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String t1 = o1.substring(0, o1.indexOf(" ")).trim();
String t2 = o2.substring(0, o2.indexOf(" ")).trim();
return t1.compareTo(t2);
}
});
for (String value : values) {
System.out.println(value);
}
哪个输出...
Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M
Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51)
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13
这只是使用 String
的“自然”顺序对元素进行排序,如果您想要更复杂的东西,则必须在 [=14] 中为其编写规则=] Comparator
方法
查看 Collections
, look for the sort
methods and Comparator
了解更多详情
你可以...
将每种类型保留在它自己的 List
中并按顺序保存它们或在它们自己的文件中保存...
你可以...
使用某种 Map
将相似的项目组合在一起...
Map<String, List<String>> mapItems = new HashMap<>();
map.put("Music", new ArrayList<String>(25));
map.get("Music").add("The Imitation Game Date & Time: 01/15/2015 08:52:39");
//...
查看 Trail: Collections 了解更多详情。
你可以...
硬着头皮尝试使用某种数据库,有许多简单的单用户数据库可用,H2 for example, which is a pure Java database. Have a look at JDBC Database Access 了解更多详细信息...
无论如何,我鼓励您设计一个基础 class 或界面来维护基本信息(标题和时间戳,从外观上看),然后创建特殊的 classes,例如 Music
/Book
/Movie
从它延伸而来。这将使管理更容易 运行,因为信息是在它自己的容器类型的概念中维护的(并允许对每种类型进行专门化)
那么,您可以创建 3 个不同的 类,一个用于电影,一个用于书籍,一个用于歌曲。
public class Movies throws Exception {
String title;
Date date;
public Movie(String title, Date date){
this.title = title;
this.date = date;
}
public class Book throws Exception {
String title;
String author;
Date date;
public Book(String title,String author, Date date){ //constructor of Book
this.title = title;
this.author = author;
this.date = date;
}
而且歌曲和书中一样。
当你实时执行应用程序时,你可以在它们到来时打印它们(就像在你的例子中一样),但同时,将它们注册到它自己的 linkedLists 或数组中(Movie[ ] movs , Book bok[] 等):
Movie mov[] = new Movie[2000];
int n = 0;
//the app begins
System.out.println(INFOMovie) //this is the method you use to print the information of a movie(supposed thing)
mov[n] = INFOMovie.title ,INFOMovie.date);
//and so on
当应用程序完成时,在退出之前,创建一个排序方法,首先读取所有电影,然后是书籍,然后是歌曲,并使它们按照您想要的顺序出现在 JPanel 上。是这样的:
int n=0;
while(n!= mov.length){
System.out.println(mov[n].toString); //the toString method is a method you can have in your classes where you make a string with all the info you want to have about that class (this time, the movie one).
}
n=0;
while(n!=bok.length){
System.out.println(mov[n].toString);
}
等等。
我想我已经理解您遇到的问题,如果我不理解,请告诉我,我会更改我的答案以适合您的问题。另外,如果你不知道我的答案的任何部分,请说出来,我会更好地解释它。
另外,MadProgrammer 做的还是不错的。有什么问题尽管问。
对Java编程相当陌生,并且最近构建了一个应用程序,该应用程序从用户那里输入电影、书籍或歌曲的标题(来自单选按钮)并将其打印到文本文件中,例如这个:
Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51
Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28
那么,我想问的是如何在文本文件中按电影、音乐或书籍排序?
我希望能够在程序结束时(我为 UI 使用 JFrame 和 JPanel),它会将电影、音乐和书籍排序到一个列表中。
我不仅希望获得实际答案的代码示例,还希望获得有关其功能和工作原理的教程。
So, what I'm asking is how do I sort by Movies, Music or Books in the Text File?
基本上,你不需要。您将值加载到内存中,在那里对它们进行排序,然后将它们保存回文件中。
List<String> values = new ArrayList<String>(25);
values.add("Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39");
values.add("Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51)");
values.add("Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M");
values.add("Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06");
values.add("Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13");
values.add("Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28");
Collections.sort(values, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String t1 = o1.substring(0, o1.indexOf(" ")).trim();
String t2 = o2.substring(0, o2.indexOf(" ")).trim();
return t1.compareTo(t2);
}
});
for (String value : values) {
System.out.println(value);
}
哪个输出...
Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M
Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51)
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13
这只是使用 String
的“自然”顺序对元素进行排序,如果您想要更复杂的东西,则必须在 [=14] 中为其编写规则=] Comparator
查看 Collections
, look for the sort
methods and Comparator
了解更多详情
你可以...
将每种类型保留在它自己的 List
中并按顺序保存它们或在它们自己的文件中保存...
你可以...
使用某种 Map
将相似的项目组合在一起...
Map<String, List<String>> mapItems = new HashMap<>();
map.put("Music", new ArrayList<String>(25));
map.get("Music").add("The Imitation Game Date & Time: 01/15/2015 08:52:39");
//...
查看 Trail: Collections 了解更多详情。
你可以...
硬着头皮尝试使用某种数据库,有许多简单的单用户数据库可用,H2 for example, which is a pure Java database. Have a look at JDBC Database Access 了解更多详细信息...
无论如何,我鼓励您设计一个基础 class 或界面来维护基本信息(标题和时间戳,从外观上看),然后创建特殊的 classes,例如 Music
/Book
/Movie
从它延伸而来。这将使管理更容易 运行,因为信息是在它自己的容器类型的概念中维护的(并允许对每种类型进行专门化)
那么,您可以创建 3 个不同的 类,一个用于电影,一个用于书籍,一个用于歌曲。
public class Movies throws Exception {
String title;
Date date;
public Movie(String title, Date date){
this.title = title;
this.date = date;
}
public class Book throws Exception {
String title;
String author;
Date date;
public Book(String title,String author, Date date){ //constructor of Book
this.title = title;
this.author = author;
this.date = date;
}
而且歌曲和书中一样。
当你实时执行应用程序时,你可以在它们到来时打印它们(就像在你的例子中一样),但同时,将它们注册到它自己的 linkedLists 或数组中(Movie[ ] movs , Book bok[] 等):
Movie mov[] = new Movie[2000];
int n = 0;
//the app begins
System.out.println(INFOMovie) //this is the method you use to print the information of a movie(supposed thing)
mov[n] = INFOMovie.title ,INFOMovie.date);
//and so on
当应用程序完成时,在退出之前,创建一个排序方法,首先读取所有电影,然后是书籍,然后是歌曲,并使它们按照您想要的顺序出现在 JPanel 上。是这样的: int n=0;
while(n!= mov.length){
System.out.println(mov[n].toString); //the toString method is a method you can have in your classes where you make a string with all the info you want to have about that class (this time, the movie one).
}
n=0;
while(n!=bok.length){
System.out.println(mov[n].toString);
}
等等。
我想我已经理解您遇到的问题,如果我不理解,请告诉我,我会更改我的答案以适合您的问题。另外,如果你不知道我的答案的任何部分,请说出来,我会更好地解释它。
另外,MadProgrammer 做的还是不错的。有什么问题尽管问。