【问题标题】:Traversing through a LinkedList in an odd way?以一种奇怪的方式遍历 LinkedList?
【发布时间】:2015-01-31 01:00:28
【问题描述】:

我希望能够在给定数据之前立即找到数据。 例如,假设您有一个姓名列表:

Bob, Tommy, Scott, Frank, Evan, Ryan, Jessy, Alex, Abner, Edward, Smith, Adam

一个假设的方法 find() 被传递一个名称,并按顺序返回紧接在它之前的名称。

例如,您运行 find(Ryan),它的期望结果是返回 Evan。 你将如何做到这一点?由于没有迭代器,我不确定这将如何完成。

【问题讨论】:

  • 您考虑过使用ListIterator吗?

标签: java string list find traversal


【解决方案1】:

这里有一个简单的 sn-p 可以解决您的问题

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
}

【讨论】:

    【解决方案2】:

    一种选择是使用indexOf

    public String find(List<String> names, String name) {
        int index = names.indexOf(name);
        return index > 0 ? names.get(index - 1) : null;
    }
    

    但是,这是非常低效的,因为 indexOfget 都需要迭代。对于相对较小的列表,这不太可能成为问题。

    【讨论】:

    猜你喜欢
    • 2016-08-18
    • 2017-01-17
    • 2017-12-04
    • 1970-01-01
    • 2019-08-03
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多