以奇怪的方式遍历 LinkedList?
Traversing through a LinkedList in an odd way?
我希望能够找到给定数据之前的数据。
例如,假设您有一个姓名列表:
Bob, Tommy, Scott, Frank, Evan, Ryan, Jessy, Alex, Abner, Edward, Smith, Adam
一个假设的方法 find() 传递了一个名称,returns 紧接在它之前的名称,顺序。
例如,您 运行 查找 (Ryan),它具有返回 Evan 的预期结果。
你将如何做到这一点?由于没有迭代器,我不确定如何完成。
这里有一个简单的片段可以解决您的问题
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
}
一种选择是使用 indexOf
:
public String find(List<String> names, String name) {
int index = names.indexOf(name);
return index > 0 ? names.get(index - 1) : null;
}
然而,这是非常低效的,因为 indexOf
和 get
都需要迭代。对于相对较小的列表,这不太可能成为问题。
我希望能够找到给定数据之前的数据。 例如,假设您有一个姓名列表:
Bob, Tommy, Scott, Frank, Evan, Ryan, Jessy, Alex, Abner, Edward, Smith, Adam
一个假设的方法 find() 传递了一个名称,returns 紧接在它之前的名称,顺序。
例如,您 运行 查找 (Ryan),它具有返回 Evan 的预期结果。 你将如何做到这一点?由于没有迭代器,我不确定如何完成。
这里有一个简单的片段可以解决您的问题
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
}
一种选择是使用 indexOf
:
public String find(List<String> names, String name) {
int index = names.indexOf(name);
return index > 0 ? names.get(index - 1) : null;
}
然而,这是非常低效的,因为 indexOf
和 get
都需要迭代。对于相对较小的列表,这不太可能成为问题。