如何对多个Java对象的属性值进行排序并求和?

如何对多个Java对象的属性值进行排序并求和?,java,class,attributes,Java,Class,Attributes,我刚开始学习Java,我只做了一个作业,这可能是非常基本的。事情是这样的: 写两个类,叫做House和Room。房间应具有诸如房间类型(字符串)(如厨房、客厅、卧室等)、面积(双人)和楼层(整数)等属性。房子应该有房间,由房间类制成。它还应该有名为totalArea(floor:int)和totalArea(int)的方法。最后一句话取自作业的字面意思 我想,对于第一个房间,我必须将所有房间的面积值相加,并且具有相同的楼层值。对于第二个,我必须计算所有房间的总面积。第二个对我来说不是问题。然而,

我刚开始学习Java,我只做了一个作业,这可能是非常基本的。事情是这样的:

写两个类,叫做House和Room。房间应具有诸如房间类型(字符串)(如厨房、客厅、卧室等)、面积(双人)和楼层(整数)等属性。房子应该有房间,由房间类制成。它还应该有名为totalArea(floor:int)和totalArea(int)的方法。最后一句话取自作业的字面意思

我想,对于第一个房间,我必须将所有房间的面积值相加,并且具有相同的楼层值。对于第二个,我必须计算所有房间的总面积。第二个对我来说不是问题。然而,第一个是。我写的课程是这样的:

public class House {
//Attributes
public Room bedroom;
public Room kitchen;
public Room livingroom;



//Constructor
public House (){
    bedroom = new Room();
    ...

};
//Methods
public double totalArea(){
    return bedroom.area + livingroom.area + kitchen.area;
}

public Room getBedroom() {
    return bedroom;
}

public void setBedroom(Room bedroom) {
    this.bedroom = bedroom;
}
等等。 }

我的房间是这样的:

public class Room {
public String typeOfRoom;
public double area;
public int floor;

//Methods
public String getTypeOfRoom() {
    return typeOfRoom;
}

public void setTypeOfRoom(String typeOfRoom) {
    this.typeOfRoom = typeOfRoom;
}

public double getArea() {
    return area;
}

public void setArea(double area) {
    this.area = area;
}

public int getFloor() {
    return floor;
}

public void setFloor(int floor) {
    this.floor = floor;
}
}

我的主要课程是

public class Main {

public static void main(String[] args) {
// write your code here
    House h1 = new House();
    Room r1 = new Room();
    Room r2 = new Room();
    Room r3 = new Room();

    r1.setTypeOfRoom("bedroom");
    r1.setArea(10);
    r1.setFloor(1);

    r2.setTypeOfRoom("kitchen");
    r2.setArea(12);
    r2.setFloor(1);

    r3.setTypeOfRoom("livingroom");
    r3.setArea(15);
    r3.setFloor(2);


    h1.bedroom = r1;
    h1.kitchen = r2;
    h1.livingroom = r3;

    System.out.printf(h1.totalArea() + "\n");

}
}


那么,如何根据楼层属性的值对Room类的所有实例的area属性的值求和呢?

由于您不使用集合,并且值是硬编码的,我认为解决方案类似于:

Map<Int, Double> floorAreas = new HashMap<>();

// Implement this method for all types of rooms, since they are hardcoded
public void setBedroom(Room bedroom) {
    double savedArea = 0;
    int currFloor = bedroom.getFloor();
    if (floorAreas.containsKey(currFloor))
        savedArea += floorAreas.get(currFloor);

    savedArea += bedroom.getArea();
    this.bedroom = bedroom;
    floorAreas.put(currFloor, savedArea);
}

public double getFloorArea(int floorNumber) {
    return floorAreas.get(floorNumber);
}
Map floorAreas=newhashmap();
//对所有类型的房间实施此方法,因为它们都是硬编码的
公共休息室(房间-卧室){
双savedArea=0;
int currfool=卧室.getFloor();
if(地板集装箱箱(当前地板))
savedArea+=楼层面积get(currFloor);
savedArea+=卧室.getArea();
这个卧室=卧室;
地板铺设(currFloor,savedArea);
}
公共双GetFloorRarea(内部楼层编号){
返回楼面面积。获取(楼面编号);
}

您是否需要为房间(
卧室
厨房
等)使用硬编码变量,或者您是否也可以在
房屋
类中使用房间集合(
列出房间
)?可能是硬编码变量,但我不知道。它不在作业中。我更改了问题的标题,因为我不小心复制了粘贴的问题描述的第一行,而不是它。非常感谢。那么,包含集合和值的解决方案将更加优雅?@RadekJohn,欢迎您。是的,集合是处理相同类型值的最佳方式。使用列表存储所有房间将使计算楼层面积更加容易。