Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在主类中调用比较器_Java_Comparator - Fatal编程技术网

Java 如何在主类中调用比较器

Java 如何在主类中调用比较器,java,comparator,Java,Comparator,我想知道如何从另一个类调用比较器,以便在主类中使用它。我创建了PacketComparator类,并希望在main方法中调用comparator。有人知道怎么做吗 public class PacketComparator implements Comparator<Packet> { public int compare(Packet p1, Packet p2) { if(p1==null || p2==null){ throw n

我想知道如何从另一个类调用比较器,以便在主类中使用它。我创建了PacketComparator类,并希望在main方法中调用comparator。有人知道怎么做吗

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);
    }
}

我不知道如何在main类中调用PacketComparator。

只需在main方法中添加以下几行即可

另外,我也不知道为什么在已经有Collections API可用的情况下要构建类似PacketSorter.selectionSort的东西

PacketComparator comparator = new PacketComparator();
List list = Arrays.asList(array);
Collections.sort(list,comparator);

现在您的列表已排序

在主类中使用此行

Collections.sort(array, new PacketComparator());

它将对您的代码进行排序。

请发布您的源代码。请发布您尝试过的内容?很抱歉造成混淆。我现在做了。谢谢。在问题中添加代码作为文本。只需在每行之前添加四个空格,它将被格式化为代码。这些网站的图片会在一段时间后被删除,那么你的问题将毫无用处;谢谢你的评论!我只是错过了。我可以解决这个问题。很抱歉回复晚了。它工作得很好。所以我接受了你的回答!非常感谢你的帮助!