このプログラムをコンパイルしようとしていますが、この時点で数時間スタックしています。Rectangles を含む ArrayLists をソートしようとしています。これらの長方形を、幅の昇順、幅の降順、および幅が同じ場合は高さで並べ替えようとしています。メイン メソッドと ArrayLists のコンテンツ、および DescendingComparator クラスと AscendingComparator クラスを含むクラスがありますが、それらをメイン メソッド内で実行することはできません。これが私のコードです。どんなアドバイスも役に立ちます、ありがとう。
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class SortingHomework10 extends Rectangle {
public static void main(String[] args){
//set up first array list with rectangles of differing widths
ArrayList<Rectangle> first = new ArrayList<Rectangle>();
Rectangle rectangleOne = new Rectangle(2,6);
Rectangle rectangleTwo = new Rectangle(4,4);
Rectangle rectangleThree = new Rectangle(2,5);
first.add(rectangleOne);
first.add(rectangleTwo);
first.add(rectangleThree);
//set up second array list with rectangles that have same width
ArrayList<Rectangle> second = new ArrayList<Rectangle>();
Rectangle rectangleFour = new Rectangle(2,5);
Rectangle rectangleFive = new Rectangle(2,4);
Rectangle rectangleSix = new Rectangle(2,3);
Rectangle rectangleSeven = new Rectangle(1,3);
second.add(rectangleFour);
second.add(rectangleFive);
second.add(rectangleSix);
second.add(rectangleSeven);
System.out.println("Before sorting.");
System.out.println(first);
System.out.println("");
//Sorting in ascending width
Collections.sort(first, new AscendingComparator());
System.out.println("In ascending order by width.");
for(int j=0; j <first.size(); j++){
System.out.println(first.get(j));
}
System.out.println("");
System.out.println("In descending order by width.");
//Sorting in descending width
//for(int i = first.size() - 1; i >=0; i--){
//System.out.println(first.get(i));
Collections.sort(first, new DescendingComparator());
}
}
//////////AscendingComparator Class code
public class AscendingComparator implements Comparator<Rectangle> {
@Override
public int compare(Rectangle o1, Rectangle o2) {
if(o1.getWidth() < o2.getWidth()){
return -1;
}
if(o1.getWidth() > o2.getWidth()){
return 1;
}
else return 0;
}
}
//////////////DescendingComparator Class code
public class DescendingComparator implements Comparator<Rectangle> {
@Override
public int compare(Rectangle o1, Rectangle o2) {
if(o1.getWidth() > o2.getWidth()){
return -1;
}
if(o1.getWidth() < o2.getWidth()){
return 1;
}
else return 0;
}
}