En supprimant les doublons d'une Liste en Java à l'aide d'itérateurs

Im essayant de travailler sur une question d'attribution pour mon intro java cours où l'on est censé supprimer les doublons dans une liste sans l'aide des ensembles ou la .méthode contains (). Fondamentalement, il suffit d'utiliser les itérateurs et les .méthode equals (). Mon code est comme suit:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class sample {
public static void main(String[] args) throws BadListException {
List<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");
myList.add("B");
myList.add("C");
myList.add("B");
myList.add("D");
unique(myList);
System.out.println(myList);
}
public static List<String> unique( List<String> items ) throws BadListException { 
List<String> newList = new ArrayList<String>();
Iterator<String> itr = items.listIterator();
//If items is null, throw a BadListException. 
if (items == null){
throw new BadListException();
}
//If items is empty, return a new empty list. 
if (items.isEmpty()){
return newList;
}
//Otherwise create and return a new list that contains the items 
//in L with all duplicates removed.  
//Example: items: "A","B","C"              result: "A","B","C" 
//Example: items: "A","A","A"              result: "A" 
//Example: items: "A","B","B","C","A","D"  result: "A","B","C","D" 
while (itr.hasNext()){
for (int i = 0; i < items.size()-1; i++){
if (itr.next().equals(items.get(i))){
itr.remove();
}
}
}
items = newList;
return newList;

Si quelqu'un pouvait expliquer ce que je fais mal et comment je dois faire de la place qui serait très utile. Veuillez noter que, puisque c'est de me préparer pour un test, je vous serais reconnaissant une explication plutôt que de simplement le bon morceau de code.

Une excellente façon de le phrasé d'un "devoirs à la question"! Maintenant, pouvez-vous nous dire comment/où les choses vont mal ou que vous?
vous êtes de retour à la newList qui vous de ne jamais changer.
Eh bien tout d'abord le premier élément de la collection obtient toujours effacé (ce que je crois est parce que le premier élément itérée est toujours égale à elle-même, pour éviter cela, je pouvais commencer ma boucle for à l'indice 1 au lieu de l'index 0 et qui permettrait de résoudre le problème je pense), mais plus important encore, lorsque j'ajoute un article en double à tout autre endroit que juste à côté de l'élément lui-même (par exemple. A, B, C, B) ensuite, le programme continue de fonctionner indéfiniment. Juste une précision: le programme ne fonctionne pas comme prévu si j'ai garder tous les éléments en double côte à côte et newList est retourné sans doublons.

OriginalL'auteur user1542396 | 2013-03-03