希望您不要介意我向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;
可以使用迭代器完成吗?
如果没有,欢迎其他方式
提前致谢!
答案 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);
}