Я пытаюсь использовать итератор списка, чтобы пройти по связанному списку и выполнить некоторые операции/проверки на следующем узле в зависимости от хранящегося там целочисленного значения, но я получаю некоторые ошибки в своем коде. Я думаю, что не понимаю, что возвращает iterator.next() (какой-то объект E, но я не знаю, как получить доступ к нужному мне значению). Редактор хочет, чтобы я сделал некоторое приведение, как описано ниже. Это избавляет от ошибок, но я не знаю, является ли это безопасным способом решения проблемы или имеет ли он поведение, которое я ищу. Пожалуйста, объясните, почему я получаю ошибки и есть ли хороший способ справиться с этим.
LinkedList<Integer>[] hash = new LinkedList[list.size()];
hash = remo.createHash(hash, list.size());
ListIterator iterator = list.listIterator(0);
// use the value of the integer stored at the next Node as its hash
// and add the same value to the linked list at that bucket
int i = 0;
while(iterator.hasNext()){
hash[iterator.next()].add(iterator.next());
i++;
}
// reset iterator to beginning of list
iterator = list.listIterator(0);
// if the hash bucket corresponding to the value at that node has more than
// one item in its list, remove that node from the list.
while(iterator.hasNext()){
if(hash[iterator.next()].size()>1){
iterator.remove(iterator.next());
}
}
createHash инициализирует каждый связанный список в массиве, а remo является экземпляром моего класса.
редактор хочет, чтобы я привел iterator.next() к хэшу int[iterator.next()], и он хочет, чтобы я привел его к in .add(iterator.next()).
Пример: хэш[(int)iterator.next()] хэш[(int)iterator.next()].add((Integer)iterator.next());