2014-10-28 3 views
2

희망 하시겠습니까? 나는 arrayList/List에 대한 iterator의 사용에 관해 초보자에게 질문하고 싶습니다.Java에서 객체 목록에서 배열을 추출하는 방법

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

이미 이름 문자열에 액세스하기 위해 수행으로) toString를 (설정 한 나는 다른를 반환하는 toString을 변경할 수 없습니다 해요 :

나는 몇 가지 데이터 멤버와 건물 클래스가 데이터 회원.

public String toString() { 
    return buildingName; 
} 

나는 building.xml 파일을로드하여 건물 클래스의 건물 객체의 무리를 만들었습니다, 나는 스윙 콤보 상자에서 볼 수 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의 목록을 퍼팅 수 있습니까?

내가 문자열을 추가하여 어떤 상황에서 buildingType 문자열의 일부를 수정해야하는 경우,

한 건물에 말을

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

[포스트 편집]

예를 들어, building type을 "Adam 's Place"의 "Greenhouse Type 1"로 변경하고 다른 건물의 buildingType을 "Greenhouse Type 2"로 변경해야합니다.

반복자를 사용하여 어떻게 할 수 있습니까?

그렇지 않은 경우 다른 방법으로 환영합니다.

미리 감사드립니다.

+0

어디 205에서 오는거야? –

+0

방금 ​​내 질문을 편집했습니다. 제가 말하고자하는 것은 buildingType을 xml 파일에서 나온 것보다 좀 더 구체적으로 만들어야한다는 것입니다. – mk7

답변

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); 
} 
+0

괜찮습니다. b.setBuildingType ("무엇이든간에") 건물 유형을 원하는대로 변경할 수 있습니다. 하지만 특정 buildingTypes를 수정하기 전에 먼저 ComboBox에 목록을 표시하도록 Building 객체에서 모든 buildingTypes (현재 중복을 가지고 있습니다.) 목록을 만드는 방법은 무엇입니까? – mk7

+0

이렇게하면 : while (i.hasNext()) { \t \t \t 건물 b = i.next(); \t \t buildingComboBoxModel.addElement (b.getNickName()); \t \t} b.getNickName()은 String이며 Building 객체가 아니기 때문에이 방법은 작동하지 않습니다. – mk7

+0

콤보 상자의 레이블에 건물 유형을 입력해야하는 것처럼 들립니다. 해당 Java 자습서 페이지를 확인하십시오. http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html – PNS

관련 문제