Java列表:从标识符中获取下一个或上一个元素

Bas*_*der 11 java pointers list

我想按标识符导航到列表.

1-我管理/创建一个列表.

2-我创建函数以从列表中获取标识符元素的下一项

你能帮我解决一下这段代码吗?

准备清单

List<String> myList = new ArrayList<String>();
myList.add("1");
myList.add("2");
myList.add("3");
myList.add("4");
myList.add("5");


public String function getNext(String uid) {

    if (myList.indexOf(uid).hasNext()) {
        return myList.indexOf(uid).nextElement();
    }
    return "";
}

public String function getPrevious(String uid) {
    return myList.indexOf(uid).hasPrevious() ? myList.indexOf(uid).previousElement() : "";
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 14

您可以使用索引来查找您的String,这样可以更快,更简单地实现这些功能.

public String getNext(String uid) {
    int idx = myList.indexOf(uid);
    if (idx < 0 || idx+1 == myList.size()) return "";
    return myList.get(idx + 1);
}

public String getPrevious(String uid) {
    int idx = myList.indexOf(uid);
    if (idx <= 0) return "";
    return myList.get(idx - 1);
}
Run Code Online (Sandbox Code Playgroud)

使用List.get(i)IS O(1)这使得保持指数最快的选项.List.indexOf(String)O(n).使用NavigatbleSet可能看起来很有吸引力O(log n),但是创建对象的成本太高,以至于在看到好处之前集合必须相当大.(在这种情况下,您将使用第一个选项)