如何从java中的对象列表中提取数组

时间:2014-10-28 22:59:04

标签: java arrays list iterator

希望您不要介意我向dotList / List询问有关使用迭代器的新手问题。

我有一个包含一些数据成员的Building Class:

public Building() {
    private String buildingName;
    private String buildingType;
    private double width;
    private double length;
    private String managerName;
    ....
}

我已经设置了toString(),如下所示,访问名称String,我不允许更改toString以返回不同的数据成员。

public String toString() {
    return buildingName;
}

我通过加载building.xml文件在Building类中创建了一堆构建对象,并且我使用了iterator来创建要在swing ComboBox中查看的buildingNames的数组/列表(但是,让我们忽略下面的那些摆动组件,并专注于逻辑上的那些:

// Create building combo box model.
buildingComboBoxModel = new DefaultComboBoxModel<Building>();
buildingsCache = new ArrayList<Building>(buildings);
Iterator<Building> i = buildingsCache.iterator();
while (i.hasNext()) buildingComboBoxModel.addElement(i.next());

// Create building list.
buildingComboBox = new JComboBoxMW<Building>(buildingComboBoxModel);
buildingComboBox.addActionListener(this);
buildingComboBox.setMaximumRowCount(10);
buildingSelectPanel.add(buildingComboBox);

您能想到多少种方法以及如何使用迭代器将buildingType列表组合在一起而无需重大代码更改?

如果我需要在某些情况下通过向其添加String来修改某些buildingType字符串,

在一座建筑物中说,

String buildingName = "Adam's Place";
String buildingType = "Greenhouse";

[post edit]

e.g。我需要将buildingType改为&#34;温室类型1&#34;为了&#34;亚当的地方&#34;并将另一栋建筑的建筑类型改为&#34;温室类型2&#34;

可以使用迭代器完成吗?

如果没有,欢迎其他方式

提前致谢!

1 个答案:

答案 0 :(得分:1)

没有特殊的方法来处理从iterator读取的对象。如果所需的唯一更改只是为Building类的成员设置不同的值,则可以通过标准方式完成,即通过添加成员设置函数。

例如,要随时修改buildingType,需要使用setBuildingType()方法:

public class Building {
    private String buildingName;
    private String buildingType;
    private double width;
    private double length;
    private String managerName;
    ....
    public void setBuildingType(String buildingType) {
        this.buildingType = buildingType;
    }
}

鉴于上述情况,可以按如下方式修改基于迭代器的代码:

Iterator<Building> i = buildingsCache.iterator();
while (i.hasNext()) {
    Building b = i.next();
    b.setBuildingType("Whatever type");
    buildingComboBoxModel.addElement(b);
}