我希望能够在给定数据之前立即找到数据。 例如,假设您有一个名单列表:
Bob, Tommy, Scott, Frank, Evan, Ryan, Jessy, Alex, Abner, Edward, Smith, Adam
假设方法find()传递一个名称,并按顺序返回它之前的名称。
例如,你运行find(Ryan),它有一个返回Evan的结果。 你会怎么做到这一点?由于没有迭代器,我不确定如何做到这一点。
答案 0 :(得分:4)
这是一个可以修复问题的简单代码段
LinkedList<String> yourListWithName = new LinkedList<String>();
//Fill your list
ListIterator<String> listIterator = yourListWithName.listIterator();
String previous = null;
while(listIterator.hasNext()) {
if(listIterator.hasPrevious())
{
previous = listIterator.previous();
listIterator.next();
}
String current = listIterator.next();
if(current.equals(yourReceivedName))
//Your algorithm
}
答案 1 :(得分:3)
一种选择是使用indexOf
:
public String find(List<String> names, String name) {
int index = names.indexOf(name);
return index > 0 ? names.get(index - 1) : null;
}
然而,这是非常低效的,因为indexOf
和get
都需要迭代。对于相对较小的列表,这不太可能是一个问题。