gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:12:58 25 4
gpt4 key购买 nike

希望你不介意我问一个新手问题,关于 arrayList/List 的迭代器的使用。

我有一个包含一些数据成员的构建类:

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 类中创建了一堆建筑对象,并且我使用迭代器创建了一个 buildingNames 数组/列表,以便在 swing ComboBox 中查看(但让我们忽略那些下面的 swing 组件,只关注逻辑):

// 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 列表放在一起?

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

说在一栋楼里,

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

[后期编辑]

例如我需要将“Adam's Place”的 buildingType 更改为“Greenhouse Type 1”,并将另一个建筑物的 buildingType 更改为“Greenhouse Type 2”

可以使用迭代器完成吗?如何完成?

如果没有,欢迎使用其他方式

提前致谢!

最佳答案

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

例如,要随时修改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);
}

关于java - 如何从java中的对象列表中提取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26619996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com