У меня возникли проблемы с выяснением того, как итератор может использоваться для замены элемента и подсчета количества замененных элементов. Это код, который я до сих пор:Как использовать итератор для замены и подсчета
public class example {
public static void main (String args[]){
//create an ArrayList
ArrayList<String> list = new ArrayList<String>();
//add elements to the array list
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("B");
list.add("B");
//use iterator to display original list
Iterator iter = list.iterator();
while (iter.hasNext()){
Object element = iter.next();
System.out.println (element + " ");
}
// call replace
String b = "B";
String x = "X";
ArrayList<String> myList = new ArrayList<String>();
replace (b, x, myList);
}
public static <E> int replace(E match, E replacement, ArrayList<E> myList) {
//throw exceptions if null
if (match == null){
throw new IllegalArgumentException ("match cannot be null");
}
if (replacement == null){
throw new IllegalArgumentException ("replacement cannot be null");
}
if (myList == null){
throw new IllegalArgumentException ("myList cannot be null");
}
//return 0 if myList is empty
boolean emptylist = myList.isEmpty();
if (emptylist = true){
System.out.println("0");
}
}
Я использовал итератор, чтобы распечатать элементы в списке, но теперь я должен использовать итератор для замены и возвращает количество замен. В этом случае я хочу заменить «B» на «X» и подсчитать количество «X». Я предполагаю, что я хочу поставить итератор в общем методе, но я не знаю, в каком направление голову в ...
Почему вы используете 'iter.remove(); iter.add (замена); 'вместо' iter.set (replacement) '? (Каждый вызов 'iter.remove()' и 'iter.add' является линейным временем для' ArrayList', поэтому вы сделали весь алгоритм квадратичным ...) –
@LouisWasserman хорошая точка. Не знаю, почему я над такими сложными вещами - отредактирован и исправлен. Благодаря! – Mureinik
, когда я вносил изменения, описанные выше, по какой-то причине я до сих пор не могу заставить программу работать правильно ... Так как я назвал «заменить» в основном методе, не следует ли теперь заменить b на x? или я все еще что-то пропустил? спасибо за вашу помощь – joe