如何在主程序中调用比较器 class
How to call a comparator in a main class
我想知道如何从另一个 class 调用比较器以便在主 class 中使用它。我创建了 PacketComparator class,并想在 main 方法中调用比较器。有人知道怎么做吗?
public class PacketComparator implements Comparator<Packet> {
public int compare(Packet p1, Packet p2) {
if(p1==null || p2==null){
throw new UnsupportedOperationException();
}
int major1 = p1.getMajorPacketIndex();
int major2 = p2.getMajorPacketIndex();
int minor1 = p1.getMinorPacketIndex();
int minor2 = p2.getMinorPacketIndex();
// compare the two packets by using major index and minor index
if(major1<major2){
return -1;
}else if(major1 == major2){
if(minor1 == minor2){
return 0;
}else if(minor1 < minor2){
return -1;
}else{
return 1;
}
}else{
return 1;
}
}
}
public class ImageDownloader {
public static void main(String[] args) {
Packet[] array = PacketReceiver.receivePackets();
PacketSorter.selectionSort(array, new PacketComparator);
String imageOutputFilename = "finalImage.jpg";
PacketRenderer.renderImage(array, imageOutputFilename);
}
}
我对如何在主程序中调用 PacketComparator 感到困惑class。
只需将以下几行放在您的主要方法中。
此外,我不确定您为什么要构建这样的东西 PacketSorter.selectionSort
,而您已经有 集合 API 可用。
PacketComparator comparator = new PacketComparator();
List list = Arrays.asList(array);
Collections.sort(list,comparator);
现在您的列表已排序
在你的主class中使用这一行。
Collections.sort(array, new PacketComparator());
它将对您的代码进行排序。
我想知道如何从另一个 class 调用比较器以便在主 class 中使用它。我创建了 PacketComparator class,并想在 main 方法中调用比较器。有人知道怎么做吗?
public class PacketComparator implements Comparator<Packet> {
public int compare(Packet p1, Packet p2) {
if(p1==null || p2==null){
throw new UnsupportedOperationException();
}
int major1 = p1.getMajorPacketIndex();
int major2 = p2.getMajorPacketIndex();
int minor1 = p1.getMinorPacketIndex();
int minor2 = p2.getMinorPacketIndex();
// compare the two packets by using major index and minor index
if(major1<major2){
return -1;
}else if(major1 == major2){
if(minor1 == minor2){
return 0;
}else if(minor1 < minor2){
return -1;
}else{
return 1;
}
}else{
return 1;
}
}
}
public class ImageDownloader {
public static void main(String[] args) {
Packet[] array = PacketReceiver.receivePackets();
PacketSorter.selectionSort(array, new PacketComparator);
String imageOutputFilename = "finalImage.jpg";
PacketRenderer.renderImage(array, imageOutputFilename);
}
}
我对如何在主程序中调用 PacketComparator 感到困惑class。
只需将以下几行放在您的主要方法中。
此外,我不确定您为什么要构建这样的东西 PacketSorter.selectionSort
,而您已经有 集合 API 可用。
PacketComparator comparator = new PacketComparator();
List list = Arrays.asList(array);
Collections.sort(list,comparator);
现在您的列表已排序
在你的主class中使用这一行。
Collections.sort(array, new PacketComparator());
它将对您的代码进行排序。