2014-10-29 2 views
0

Итак, я попытался выполнить поиск через Stackoverflow и не смог найти что-то полезное. Если есть такая ссылка, пожалуйста, укажите мне ее.Использование классов, таких как списки в java

Скажем, у меня есть класс в Java с переменными, глядя, как это:

class Example { 
     public type a; 
     public Example next; 
} 

Очевидно, что я хочу использовать этот класс в качестве списка, где я могу добавить больше элементов на конце, используя переменный объект рядом.

Мое замешательство возникает при итерации через них. Предположим, что я уже сделал объект class Example, называемый тестом, и добавил несколько элементов в следующую переменную. При использовании этого объекта в методе, есть разница, если я использую:

test = test.next; 

или если я использую:

Example test2 = test; 
test2 = test2.next 

Я полагаю, эти два означают то же, являются ссылками на тот же объект так переборе один также означает повторение второго. Когда я возвращаюсь из метода, «указатель» на этом объекте возвращается к моему исходному объекту. Правильно ли это?

Теперь у меня есть проблема, если я хочу удалить один из элементов. Предполагая, что я написал раньше, я не могу просто написать test = test.next;, потому что все, что я сделаю, будет «рассеиваться», как только я выйду из метода.

Как мне подойти к этой проблеме, если я хочу удалить один из элементов в моем «списке»? Еще одна вещь; Я не могу использовать LinkedLists или что-то еще, так я должен выполнять свое задание.

+0

Используйте [LinkedList ] (http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html) – FGreg

+0

Это на самом деле не является дубликатом, я вижу здесь непонятый из переменные и ссылки – yunandtidus

ответ

0

Вы ищите итераторы Java. Посмотрите на это tutorial за помощью. По сути, вы должны создать типизированную коллекцию в Java, например. List<Example> и используйте итератор в этом списке. List происходит от java.util.

2

Вы реализуете алгоритм удаления стандартного связанного списка. Для этого есть sample Google hit, но вы можете просто искать себя и следовать чему угодно.

Вы также можете использовать Java LinkedList.

Вы также можете попробовать прочитать исходный код Java для метода remove для LinkedList.

Я также хочу указать, что вы не используете классы, подобные спискам. Вы просто реализуете LinkedList и выбираете вызов своего класса Example вместо List или LinkedList или SinglyLinkedList.

Смежные вопросы