두 개의 다른 ArrayList
인스턴스 (Container
유형과 String
유형 중 하나)이 있습니다. 첫 번째는 한 국가의 "금지 된 제품"(문자열) 목록이며, 다른 하나는 선박의 컨테이너 목록입니다. 배는 국가를 통해 여행하며 컨테이너는 금지 된 상품을 검색합니다. 컨테이너 contains
금지 된 상품 인 경우 해당 컨테이너를 제거/삭제해야합니다. 내가 inspect
에 컨테이너 선박을 방법을 만들려고하고ArrayList에서 다른 ArrayList의 값을 검색하십시오.
public void removeContainer(int i)
{
if(i >= 0 && i < containers.size()) {
Container r = containers.remove(i);
totalWeight = totalWeight - r.getWeight();
}
}
:
public Customs(String country)
{
countryName = country;
bannedGoods = new ArrayList<String>();
}
public Ship(String n, double weight)
{
emptyWeight = totalWeight = weight;
name = n;
containers = new ArrayList<Container>();
}
은 이미 컨테이너를 제거하는 선박 클래스의 메소드가 있습니다. 각각의 배열에 대해 두 개의 for-loops를 사용하고 싶지만 올바르게 만들 수없는 것 같습니다! 누군가가 두 개의 루프를 사용하여 어레이를 검색하도록 도울 수 있습니까? 또한 루프에서 반복자 (구체적으로 remove
함수)를 사용해야한다고 생각하지만, 이는 나에게 혼란 스럽다. 이터레이터 remove
메소드를 이미 클래스 배에서 작성한 메소드로 대체해야합니까?
for(String good : bannedGoods) {
Iterator<String> it = ship.containers.iterator();
while (it.hasNext())
if (ship.contains(good))
it.remove();
}
'containers'는'Container' 객체가 아닌 문자열의 목록입니다 : 당신의
Customs
클래스 내에서, 당신은
Container
인스턴스의 기분을 상하게 제거Iterator
의에게remove
방법을 사용하십시오. 또한'inspect'는 아마도'Customs'의 인스턴스 메소드이기 때문에'bannedGoods'리스트에 직접 접근 할 수 있습니다. – nbrooksOP가 이것을 첫 번째 라인으로 작성했습니다. '동일한 유형의 String을 가진 두 개의 다른 arrayList를가집니다.' –
두 번째리스트가 'Container'내에있는 것으로 보입니다. 선박 생성자'containers = new ArrayList();'을 참조하십시오. –
nbrooks