예상대로 ArrayList
및 ArrayListIterator
클래스가 구현되어, ArrayList
는 ListADT
구현한다고 가정하고, BadListException
는 제로와 체크 예외 매우 간단한 - 인수 생성자. 또한 null 요소가 목록에 추가되지 않을 수도 있다고 가정합니다.
필자는 반복기를 사용하여 아래에 지정된 Java 메소드를 완료해야합니다. 이러한 요구 사항을 충족해야 내 솔루션 :
- 명시 적으로리스트를 횡단에 대한 반복자를 사용해야합니다는
- 가
contains
방법
- 에게 사용해서는 안됩니다 (즉, 당신은에 대한 루프 또는 Java의 확장-에 대한 루프를 사용하지 않을 수 있습니다) (
contains
제외) ListADT
방법을 사용 ListADT.iterator()
포함한 on-line reading,에서 설명하지만
- 는 파라미터의 내용을 수정하지 않아야들
List
기타 다른 방법을 사용해서는 안된다.
함수의 골격 :
내 솔루션은 반복자 방법을 포함하여 읽는 온라인에 설명 된
ListADT
인터페이스 (에있는 방법을 사용하는지 확인해야
public static ListADT<String> union(ListADT<String> list1, ListADT<String> list2) {
// If list1 or list2 (or both list1 and list2) is null, throw a BadListException.
// If list1 and list2 are both empty, return a new empty list.
// If list1 is empty (but not list2), return a new list containing the strings in
// list2 with all duplicates removed.
// If list2 is empty (but not list1), return a new list containing the strings in
// list1 with all duplicates removed.
// Otherwise, create and return a new list that contains the strings in list1 and
// the strings in list2 with all duplicates removed.
//
// Examples:
// list1: "a","b","c" list2: "d","e","f" result: "a","b","c","d","e","f"
// list1: "a","c","b","d" list2: "e","d","a","f" result: "a","c","b","d","e","f"
// list1: "a","b","c","b","a" list2: "c","a","b" result: "a","b","c"
//
// Note: the list returned does not need to be in any particular order
, 상술 한 바와 같이).
어떻게하면됩니까?
좋은 방법! 이제 어떻게/어디서 일이 잘못되고있는 지 알려줄 수 있습니까? – Floris
결코 변경하지 않는'newList'를 반환하고 있습니다. – cIph3r
우선 컬렉션의 첫 번째 항목은 항상 지워집니다. (반복되는 첫 번째 요소가 항상 동일하므로이 문제를 피하기 위해 인덱스 0 대신 인덱스 1에서 루프를 시작할 수 있다고 생각합니다. 내가 중요하다고 생각하는 것)하지만 더 중요한 것은 항목 자체 (예 : A, B, C, B) 옆에있는 다른 위치에 중복 된 항목을 추가하면 프로그램이 무기한으로 계속 실행된다는 것입니다. 설명 : 모든 중복 된 항목을 나란히 놓고 newList가 중복되지 않으면 프로그램이 의도 한대로 작동합니다. – user1542396