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),但是创建对象的成本太高,以至于在看到好处之前集合必须相当大.(在这种情况下,您将使用第一个选项)