使用public String()遍历列表(SortedTree)

时间:2014-03-06 18:02:35

标签: java tree traversal

如何使用公共String方法遍历SortedTree列表?

我正在尝试编写一个方法来确定列表中的下一个项目,将游标设置为null,然后返回该项目。然后我将光标设置为null并返回null。理想情况下,我想附加到一个字符串(如toString),然后选择一个匹配光标后面的条目。 (如果有条目)。

或者我会更好地使用像ArrayList这样的东西吗?

我的树司机:

SortedTree tree = new SortedTree();

    // Populate the tree
    tree.add("Jim");
    tree.add("John");
    tree.add("Henry");
    tree.add("Paul");
    tree.add("Ringo");
    tree.add("Mick");
    tree.add("Keith");
    tree.add("Charlie");
    tree.add("Eric");
    tree.add("David");
    tree.add("George");

//         traverse it looking for eeeeerie names
    System.out.println("Eeeeerie items in our tree:");
    String item = tree.first();
    while (item != null) {
        if (item.contains("e") || item.contains("E"))
            System.out.println(item);
        item = tree.next();
    }

这是我试图返回适当名称的方法 就目前而言,我的方法只返回名称“Charlie”,但输出应为:

“我们树上的Eeeeerie物品:
查理
埃里克
乔治
亨利
基思“

public String next() {
    cursor = root;
    String nodeList = null;
    while (cursor.right != null) {
        cursor = cursor.right;
        nodeList += cursor.item;
    }

    if (cursor == null) {
        return null;
    }
    return null;
}

我还应该包含我的游标代码:

TreeNode cursor; // node to remember the current traversal position

public void setCursor(TreeNode node) {

    this.cursor = node;
}

这是我在驱动程序中调用的第一个()方法

public String first() {
    TreeNode beginning = root;
    do {
        beginning = beginning.left;
    } while (beginning.left != null);
    setCursor(beginning);
    return beginning.item;
}

1 个答案:

答案 0 :(得分:0)

像这样:

List<String> names = new ArrayList<String>();
names.add("Jim");
// ... add rest here ...

List<String> eerie = new ArrayList<String>(); // a new empty list

// Collect the ones you want
for(String name : names) {
    // I'm not sure what 'contains()' is (in your code), but this will work.
    if(item.indexOf("e") != -1 || item.indexOf("E") != -1) {
        eerie.add(name);
    }
}

// Sort 'em
Collections.sort(eerie);

// Print 'em
for(String name : eerie) {
    System.out.println(name);
}