Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 17
1

Итератор

03.06.2014, 14:50. Показов 815. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята помогите, я не пойму, что я делаю не так. Почему не создается Итератор. Вот листинг метода
Java
1
2
3
4
5
6
7
8
9
public static void copy(Node list){
    Node list1=new Node("Скопированный список: ");
    list = new Node();
    Iterator<Integer> itr = list.iterator( );
    while(itr.hasNext()){
        Object element = itr.next();
        addNode(list1, element);
    }
    printMyList(list1);}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2014, 14:50
Ответы с готовыми решениями:

Итератор
есть стэк public class Stack { private int sizeArray; private Person a; private int top;...

Итератор
Подскажите, пожалуйста , как работают Итератор в ява. нужен ли для этого специально отдельный...

Итератор
Всем доброго времени суток, необходимо для одной задачи использовать итератор, но если я добавляю в...

Итератор
Имеется два объекта класса User в коллекции Map, однако почему мы не попадаем в следующий кусок...

7
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.06.2014, 16:16 2
Что значит не создается?
Что за класс Node?
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
03.06.2014, 19:39 3
Prinston, конечно хотелось бы увидеть класс что за такой класс Node но если включить телепатию... =)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void copy(Node list){ //Ок, в этой строке откуда-то передали list 
    //В нем вероятно даже есть какие то элементы...
    Node list1=new Node("Скопированный список: ");  //Создаем второй список
    //Не будем обращать внимание на "оригинальный" конструктор
    list = new Node(); //А вот эта строка что делает??
    //Вы взяли тот list что передали и заменили новым (предположительно пустым)
    // попробуйте ее удалить
    
    Iterator<Integer> itr = list.iterator( ); //И пытаетесь щелкать итератором по пустому классу =)
    // потому и не работает скорее всего.
    while(itr.hasNext()){
        Object element = itr.next();
        addNode(list1, element);
    }
    printMyList(list1);}
На самом деле повторите раздел о Методах и об их параметрах...
0
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 17
03.06.2014, 21:24  [ТС] 4
Вот весь код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.io.*;
import java.util.*;
public class Node { //Node – элемент списка ( «узел»
String inf; //информационная часть
Node next; //указатель на следующий элемент
Node( ) { next=null; inf=null; } //конструктор
Node (String name) { inf=name; next=null; } //конструктор
public static void addNode (Node head, String s) { //добавить элемент s к списку head
Node e=new Node (s); //создать новый элемент списка и поместить в него s
Node old=head.next; head.next=e; e.next=old; // добавить элемент
}
public static void printMyList(Node s) { //напечатать список
if(s!=null) { // если список существует,
System.out.print(s.inf+ " "); //напечатать информационную часть
printMyList(s.next); //и напечатать остаток
} //if
} //printMyList
//public static void copy(Node s, Node j) { //напечатать список
 
//} //if
/*public static void copy(Node list){
    Node list1=new Node("Скопированный список: ");
    list = new Node();
    Iterator<Node> iterator = list.iterator();
    while(itr.hasNext()){
        Object element = itr.next();
        addNode(list5, element);
    }
    printMyList(list1);
}*/
   public static void main() throws IOException{ 
    String line;
    String[] lineNumbers;
    int numbers [];
    Node list = new Node("Список 1:");
    //Node list1=new Node("Скопированный список начиная с "+n+" элемента. (скопировалось " +k+ " элементов)");
    BufferedReader in = new BufferedReader(new FileReader("matrt.txt"));
    while((line=in.readLine())!=null){
    lineNumbers=line.split("\\s+");
    //numbers=new int[lineNumbers.length]; //создаём массив такой же длины как и массив чисел ввиде строки
            for(int j=0;j<lineNumbers.length;j++){
                addNode(list, lineNumbers[j]);
                //copy(list);
    
            }
   }
printMyList(list);
//copy(list);
}
}//Integer.toString(i*i)
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
04.06.2014, 01:26 5
Prinston, я честно говоря даже не знаю чем вам помочь... тут переделывать поидее надо практически все...
А почему вы не хотите воспользоваться коллекциями?

Добавлено через 1 час 56 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package reisal78;
 
public class Iterator{
 
    private Node node;
    private Node firstNode;
 
    private Iterator(Node node) {
        this.node = node.getNextNode();
        firstNode = node.getNextNode();
    }
 
    protected static Iterator getInstance(Node node){
        return new Iterator(node);
    }
 
    public boolean hasNext() {
        if (node == null) {
            node = firstNode;
            return false;
        }
        else
            return true;
    }
 
    public String next() {
        String tmp = node.getLine();
        node = node.getNextNode();
        return tmp;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package reisal78;
 
public class Node {
    private String line;
    private Node nextNode;
    private Node currentNode;
 
    public Node() {
        currentNode = this;
    }
 
    private Node(String line) {
        this.line = line;
    }
 
    public void addNode(String line) {
        currentNode.nextNode = new Node(line);
        currentNode = currentNode.nextNode;
    }
 
    public Iterator getIterator() {
        return Iterator.getInstance(this);
    }
 
    protected String getLine() {
        return line;
    }
 
    protected Node getNextNode() {
        return nextNode;
    }
    public static void main(String[] args) {
        String[] lines = new String[10];
        for (int i = 0; i < lines.length; i++) {
            lines[i] = (i + 1) + " тестовая строка";
        }
 
        Node node_1 = new Node();
        for (int i = 0; i < lines.length; i++) {
            node_1.addNode(lines[i]);
        }
 
        Iterator it = node_1.getIterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
 
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}
0
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 17
04.06.2014, 11:15  [ТС] 6
Мне нужно разработать метод копирования списка. Понимаете, если бы я мог делать так как я захочу я бы уже давно сделал, а так нужно сделать именно так как в листинге и дополнительно добавить метод копирования списка. А для копирования мне нужен итератор (для перехода по элементам).
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
04.06.2014, 13:04 7
Prinston, что бы работал тот итератор, нужно что бы ваш класс имплементил интерфейс соответствующей коллекции... в противном случае его нужно написать самостоятельно.

Мне нужно разработать метод копирования списка.
а что вам мешает взять два класса что я выложил и сделать метод копирования?


Java
1
2
3
4
5
6
    public void copyNodeList(Node toNode) {
        Iterator it = this.getIterator();
        while (it.hasNext()) {
            toNode.addNode(it.next());
        }
    }
Класс Node целиком (для работы нужен класс Iterator из прошлого поста
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package reisal78;
 
public class Node {
    private String line;
    private Node nextNode;
    private Node currentNode;
 
    public Node() {
        currentNode = this;
    }
 
    private Node(String line) {
        this.line = line;
    }
 
    public void addNode(String line) {
        currentNode.nextNode = new Node(line);
        currentNode = currentNode.nextNode;
    }
 
    public Iterator getIterator() {
        return Iterator.getInstance(this);
    }
 
    protected String getLine() {
        return line;
    }
 
    protected Node getNextNode() {
        return nextNode;
    }
 
    public void copyNodeList(Node toNode) {
        Iterator it = this.getIterator();
        while (it.hasNext()) {
            toNode.addNode(it.next());
        }
    }
 
    public void printList() {
        Iterator it = this.getIterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
 
    public static void main(String[] args) {
        // имитирую чтение данных из файла
        String[] lines = new String[10];
        for (int i = 0; i < lines.length; i++) {
            lines[i] = (i + 1) + " тестовая строка";
        }
        // Создаю список
        Node node_1 = new Node();
        for (int i = 0; i < lines.length; i++) {
            node_1.addNode(lines[i]);
        }
        Node node_copy = new Node();
        node_1.copyNodeList(node_copy);
 
        //Вывожу оригинал
        node_1.printList();
        System.out.println();
        //вывожу копию
        node_copy.printList();
 
    }
 
}
1
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 17
05.06.2014, 12:00  [ТС] 8
Java
1
Спасибо большое.
0
05.06.2014, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2014, 12:00
Помогаю со студенческими работами здесь

Внутренний итератор
Задание звучит след. образом: Пусть дан массив объектов типа String. Создать связный список строк...

Узнать пустой ли итератор?
У меня есть итератор (не важно откуда он взялся, я о нем ничего не знаю) Мне необходимо...

Итератор для массива
Помогите написать итератор для массива...

Java стратегия, итератор, композиция
Добрый день! Буду признателен, если &quot;разжуете&quot; и по возможности поможете с кодом вот в такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru