如何在主类中调用比较器

时间:2017-03-10 03:23:51

标签: java comparator

我想知道如何从另一个类调用一个比较器,以便在主类中使用它。我创建了PacketComparator类,并希望在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感到困惑。

2 个答案:

答案 0 :(得分:1)

只需在主方法中添加以下行。

另外,当您已经有收藏 API时,我不确定您为什么要构建类似PacketSorter.selectionSort的内容。

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

现在您的列表已排序

答案 1 :(得分:0)

在主班中使用此行。

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

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