작동 코드 예제를 따로 골라서 작동 방식을 연구 할 수 있습니까? 특히, 내 목록에서 x 번호가 매겨진 개체의 주소 필드를 얻으려면 어떻게해야합니까? 목록에서 x 번째 개체를 어떻게 삭제합니까? 개체 x의 가격 필드를 새 값으로 설정하려면 어떻게해야합니까?arraylist에 저장된 객체에서 필드를 가져 오는 방법은 무엇입니까?
나는 특정 개체를 대상으로하고 조작하는 방법을 목록의 마지막에 추가 된 새로운 객체로 houseList.add이 장소 데이터를,하지만 난 그것의 반대를 이해하지 않고 방법을 이해 그것. 멀티 클래스 예제를 보여주십시오. 감사!
House 개체를 만드는 클래스이며 다음 정보를 보유합니다.
public House(int address, String street, double price, int rooms) {
this.address = address;
this.street = street;
this.price = price;
this.rooms = rooms;
}
하고 다음과 같은 방법이 있습니다 ...
public void SetAddress (int address){
setAddress(address);
}
private void setAddress (int address){
this.address = address;
}
public int GetAddress (int address){
address = getAddress(address);
return address;
}
private int getAddress (int address){
return address;
}
@Override
public String toString() {
return address + " " + street + " " + price + " " + rooms;
}
등
... 다른 클래스에서
, 나는 houseList라는 이름의 하우스 개체의 목록을 선언하고이 ArrayList에가 있음 .
List<House> houseList;
houseList = new ArrayList();
및 데이터로 채울 수,
houseList.add(new House(this.address, this.street, this.price, this.rooms));
과 반복 ...
public void showHouses() {
Iterator<House> itr = houseList.iterator();
while (itr.hasNext()) {
System.out.println(itr.next().toString());
}
}
이 시점까지, 내 집의 방법 중 어느 것도 나열 이상으로 올로 오버라이드 (override)되고있는 toString 메소드를 제외 해, 재생합니다. 제가 알아낼 수 없었던 것은 목록의 x 번째 요소에 대해 this.street 또는 this.price를 가져 오는 방법입니다. 나는 houseList.add (새 집 (this.address, this.street, this.price, this.rooms))와 함께 목록에 데이터를 넣을 수 있습니다.
그리고 반복을 통해 예상대로 데이터가 저장되는 것을 볼 수 있습니다. 나는이 세터들과 게터들을 가지고 있지만, 나는이 아이템들을 꺼내거나 넣는 데 익숙해 져야 할 방법을 이해하지 못하고있다. 내가 houseList.add를 사용했기 때문에, add의 반대는 얻을 것이지만, 그렇지 않다는 것을 알았다. 올바른 구문을 알아 냈습니다.
getter는 계통 결함이 있습니다. getter는 인수를 취하지 않고 객체의 일부 값 (인수로 전달한 값이 아님)을 반환합니다. 명명 규칙을 존중하지 않는 사람과 똑같은 일을하는 두 명의 게터는 정말 나쁜 생각입니다. –
동일한 작업을 수행하는 두 가지 방법 중 하나는 공개이고 다른 하나는 비공개입니다. 알다시피, 이것은 캡슐화이며 데이터에 직접 액세스하지 못하게하고, 코드를 통해 출입 또는 출입을 제어 할 수 있으며이를 따르는 것이 좋습니다. 내가 틀렸어? 그렇다면 설명하십시오. – Michael
public 메서드를 사용하는 경우에는 private 메서드를 사용하여 동일한 작업을 수행 할 필요가 없습니다. private 메소드가 복잡한 public 메소드 구현의 한 부분이라면 이해할 수 있지만 private getter를 호출하는 public getter는별로 의미가 없습니다. –