Использование toString () с LinkedList - PullRequest
0 голосов
/ 19 сентября 2019

Мне интересно, как я мог бы создать toString() метод для печати моего linkedlist, как показано в нижней части моего основного метода.Я попытался реализовать один, который нашел в сети, но он выдал пару ошибок:

для 'e' и 'iterator ()' (не могу найти символ.)

Наряду с этим мне также интересно, был ли способ реализовать метод toString() без использования Iterator или StringBuilder.

Код:

static LinkedList<Node> hashTable[] = new LinkedList[100];

static class Node {

    int value;
    int key;
}

public static void main(String[] args) throws FileNotFoundException {

    File f = new File("Ex5.txt");

    Scanner scan = new Scanner(f);

    if (f.exists() == false) {
        System.out.println("File doesn't exist or could not be found.");
        System.exit(0);
    }

    for (int i = 0; i < 100; i++) {
        hashTable[i] = null;
    }

    while (scan.hasNextInt()) {
        int n = scan.nextInt();
        insert(n, hashFunction(n));
    }

    for (int i = 0; i < 100; ++i) {
        System.out.println(hashTable[i]);
    }

    int emptyEntries = 0;

    for (int i = 0; i < 100; i++) {
        if (hashTable[i] == null) {
            emptyEntries += 1;
        }
    }
    System.out.println("Number of empty entries: " + emptyEntries);


}

public static void insert(int key, int value) {
    int index = hashFunction(value);
    LinkedList<Node> items = hashTable[index];

    if (items == null) {
        items = new LinkedList<>();

        Node item = new Node();
        item.key = key;
        item.value = value;

        items.add(item);

        hashTable[index] = items;
    } else {
        for (Node item : items) {
            if (item.key == key) {
                item.value = value;
                return;
            }
        }

        Node item = new Node();
        item.key = key;
        item.value = value;

        items.add(item);
    }
}

public static int hashFunction(int value) {
    int hashKey = value % 100;
    return hashKey;
}

@Override
public String toString() {
    Iterator<Object> i = iterator();
    if (!i.hasNext()) {
        return "[]";
    }

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        Object element = i.next();
        sb.append(e == this ? "(this Collection)" : element);
        if (!i.hasNext()) {
            return sb.append(']').toString();
        }
        sb.append(", ");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...