Java Collections.sort(List <t> list,Comparator <! - ?super T - > c)</t>

时间:2014-06-05 16:11:02

标签: java sorting collections

我必须实施这个测试:

package it.unica.pr2.test;

import it.unica.pr2.abitazioni.*;
import java.util.Collections;
import java.util.List;
/*import javafx.application.Application;
import javafx.stage.Stage;*/

public class TestAbitazioni /*extends Application*/ {


  public static void main(String[] args)  /*public void start(Stage primaryStage) */{
        // C
        Immobile casa = new Casa();
        List<Ambiente> c2 = casa;

        // C+
        casa.add(new Bagno(10));                // 10 mq
        casa.add(new Cucina(20));               // 20 mq
        casa.add(new CameraDaLetto(25));        // 25 mq
        casa.add(new CameraDaLetto(15));        // 15 mq
        casa.add(new Corridoio(12));            // 12 mq

        assert casa.superficie() == 10 + 20 + 25 + 15 + 12;

        assert casa.bilocale() == false;        // i bi locali hanno solo 1 cucina 1 bagno 1 camera da letto (no altri ambienti)

        // B
        Bagno bagno = new Bagno(13);
        assert bagno.toString().equals("Questo ambiente occupa 13mq");
        Cucina cucina = new Cucina(26);
        assert cucina.toString().equals("Questo ambiente occupa 26mq");

        Collections.sort(casa);                 // sort by dimension
        assert casa.get(0).getSuperficie() == 10;
        assert casa.get(1).getSuperficie() == 12;
        assert casa.get(2).getSuperficie() == 15;
        assert casa.get(3).getSuperficie() == 20;
        assert casa.get(4).getSuperficie() == 25;

        // A
        Collections.sort(casa, new StanzeByType()); // prima cucine, poi camere da letto, poi bagni, poi qualsiasi altro tipo; a parita' di tipo, dal piu' piccolo al piu' grande

        assert casa.get(0).getSuperficie() == 20;
        assert casa.get(1).getSuperficie() == 15;
        assert casa.get(2).getSuperficie() == 25;
        assert casa.get(3).getSuperficie() == 10;
        assert casa.get(4).getSuperficie() == 12;
        /*
        // A+
        casa.mostraCasa();        
         * 
         */
    }
/*
    public static void main(String[] args) {        
        launch(args);
    }    */
}

Collections.sort(casa,new StanzeByType())问题在这里,我如何在这里实现一个类构造函数来按类型对集合进行排序? 如果意大利语是一个问题,我将翻译来源。 谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你的StanzeByType类应该是这样的,以便按类型排序......希望这可能会有所帮助

public class StanzeByType implements Comparator<Ambiente>{

@Override
public int compare(Ambiente amiAmbiente, Ambiente otherAmbiente) {

    return amiAmbiente.getType().compareTo(otherAmbiente.getType());
}

}