2017-03-10 7 views
0

コンパイラをメインクラスで使用するために別のクラスから呼び出す方法が不思議です。私は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を呼び出す方法と混同しています。

+0

あなたのソースコードを投稿してください – Jaycee

+0

あなたが試したことを投稿してください。 –

+0

混乱して申し訳ありません。私は今それをしました。ありがとう。 – Tak

答えて

0

使用して、あなたのメインのクラスで、この行をソートされます。

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

コードをソートします。

+0

遅く返事を申し訳ありません。それは完璧に働いた。そして私はあなたの答えを受け入れました!手伝ってくれてどうもありがとう! – Tak

1

あなたのメインメソッドに以下の行を挿入してください。

また、コレクション APIをご利用いただいている場合は、PacketSorter.selectionSortのようなものを作成する理由がわかりません。

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

今、あなたのリストが

+0

コメントありがとうございます!私は逃した()。そして私はそれを修正することができました。 – Tak

関連する問題