Java 如何按ArrayList对象的布尔字段对其排序
嗨,我有一个自定义对象的数组列表。我可以用下面的代码按int和String字段对它们进行排序:Java 如何按ArrayList对象的布尔字段对其排序,java,arraylist,comparator,Java,Arraylist,Comparator,嗨,我有一个自定义对象的数组列表。我可以用下面的代码按int和String字段对它们进行排序: public class ArtistNameComparator implements Comparator<MP3Track>{ @Override public int compare(MP3Track t1, MP3Track t2) { return t1.getArtist().compareTo(t2.getArtist()); }
public class ArtistNameComparator implements Comparator<MP3Track>{
@Override
public int compare(MP3Track t1, MP3Track t2) {
return t1.getArtist().compareTo(t2.getArtist());
}
}
我是Java新手,如果有人能解释为什么这是错误的,我将不胜感激
非常感谢
它从这里被称为:
public void sortTracks(){
String choice = null;
System.out.println(face.getSortCatalogueMenu());
System.out.print("ENTER->");
try{
choice = (keyboard.readString().trim().toLowerCase());
}
catch(InvalidUserInputException e){
System.err.println(e + "Error in sortTracks");
}
switch (choice) {
case "n":
Collections.sort(vector, new TrackNoComparator());
System.out.println("Your MP3 Catalogue has been sorted by Track Number");
break;
case "t":
Collections.sort(vector, new TrackNameComparator());
System.out.println("Your MP3 Catalogue has bee sorted by Track Name");
break;
case "a":
Collections.sort(vector, new ArtistNameComparator());
System.out.println("Your MP3 Catalogue has been sorted by Artist Name");
break;
case "b":
Collections.sort(vector, new AlbumNameComparator());
System.out.println("Your MP3 Catalogue has been sorted by Album Name");
break;
case "f":
Collections.sort(vector, new FavoriteComparator());
break;
case "x":
return;
}
for (MP3Track t : vector)
System.out.println(t);
}//End sortTrack
这是从这里的main调用的:
String choice = "";
while(!(choice.equals("e"))){
System.out.println(face.getMainMenu());
System.out.print("ENTER->");
try{
choice = (keyboard.readString().trim().toLowerCase());
}
catch(InvalidUserInputException e){
System.out.println("InvalidUsedInputException thrown " + e.getMessage());
}
switch (choice){
case "h":
MP3Cat.shuffleTracks();
break;
case "d":
MP3Cat.deleteTrack();
break;
case "a":
MP3Cat.addTrack();
break;
case "w":
MP3Cat.swapTrack();
break;
case "s":
MP3Cat.catSearch();
break;
case "i":
MP3Cat.trackInfo();
break;
case "t":
MP3Cat.sortTracks();
break;
case "r":
MP3Cat.exploreTracks();
break;
case "f":
MP3Cat.favorites();<---------
case "x":
System.exit(1);
}
}
字符串选择=”;
而(!(choice.equals(“e”)){
System.out.println(face.getMainMenu());
系统输出打印(“输入->”;
试一试{
choice=(keyboard.readString().trim().toLowerCase());
}
捕获(InvalidUserInputException){
System.out.println(“引发InvalidUsedInputException”+e.getMessage());
}
开关(选择){
案例“h”:
MP3Cat.shuffleTracks();
打破
案例“d”:
MP3Cat.deleteTrack();
打破
案例“a”:
MP3Cat.addTrack();
打破
案例“w”:
MP3Cat.swapTrack();
打破
案例“s”:
MP3Cat.catSearch();
打破
案例“一”:
MP3Cat.trackInfo();
打破
案例“t”:
MP3Cat.sortTracks();
打破
案例“r”:
MP3Cat.exploreTracks();
打破
案例“f”:
MP3Cat.favorites();不可能在一个类中定义具有相同签名的两个方法,但是您有重复的public int compare(MP3Track t1,MP3Track t2)
不可能在一个类中定义具有相同签名的两个方法,但是您有重复的public int compare(MP3Track t1,MP3Track t2)
+1
是无效的代码。它应该是返回1
奇怪,返回+1为我编译。编译器错误也指向哪一行?返回+1
是有效的,因为+1
被计算为1
。在调用排序的地方添加主类代码。我尝试了1&+1,但没有乐趣!!!+1
不是v有效代码。它应该是return 1
奇怪,return+1为我编译。编译器错误也指向哪一行?return+1
是有效的,因为+1
被计算为1
。在调用排序的地方添加主类代码。我尝试了1&+1,但没有乐趣!!!这个。OP,删除比较实现中的一个来自您的FavoriteComparator的声明。抱歉,这是我显示我尝试的方式。我已分别尝试了两种比较方法。此.OP,从您的FavoriteComparator中删除一种compare
实现。抱歉,这是我显示我尝试的方式。我已分别尝试了两种比较方法。
Exception in thread "main" java.lang.RuntimeException:
Uncompilable source code - Erroneous sym type: java.util.Collections.sort
at mp3_box.MP3Catalogue.sortTracks(MP3Catalogue.java:88)
at mp3_box.MP3Player.main(MP3Player.java:56) Java Result: 1
public void sortTracks(){
String choice = null;
System.out.println(face.getSortCatalogueMenu());
System.out.print("ENTER->");
try{
choice = (keyboard.readString().trim().toLowerCase());
}
catch(InvalidUserInputException e){
System.err.println(e + "Error in sortTracks");
}
switch (choice) {
case "n":
Collections.sort(vector, new TrackNoComparator());
System.out.println("Your MP3 Catalogue has been sorted by Track Number");
break;
case "t":
Collections.sort(vector, new TrackNameComparator());
System.out.println("Your MP3 Catalogue has bee sorted by Track Name");
break;
case "a":
Collections.sort(vector, new ArtistNameComparator());
System.out.println("Your MP3 Catalogue has been sorted by Artist Name");
break;
case "b":
Collections.sort(vector, new AlbumNameComparator());
System.out.println("Your MP3 Catalogue has been sorted by Album Name");
break;
case "f":
Collections.sort(vector, new FavoriteComparator());
break;
case "x":
return;
}
for (MP3Track t : vector)
System.out.println(t);
}//End sortTrack
String choice = "";
while(!(choice.equals("e"))){
System.out.println(face.getMainMenu());
System.out.print("ENTER->");
try{
choice = (keyboard.readString().trim().toLowerCase());
}
catch(InvalidUserInputException e){
System.out.println("InvalidUsedInputException thrown " + e.getMessage());
}
switch (choice){
case "h":
MP3Cat.shuffleTracks();
break;
case "d":
MP3Cat.deleteTrack();
break;
case "a":
MP3Cat.addTrack();
break;
case "w":
MP3Cat.swapTrack();
break;
case "s":
MP3Cat.catSearch();
break;
case "i":
MP3Cat.trackInfo();
break;
case "t":
MP3Cat.sortTracks();
break;
case "r":
MP3Cat.exploreTracks();
break;
case "f":
MP3Cat.favorites();<---------
case "x":
System.exit(1);
}
}