LinkedList - addLast()并不总是在列表末尾添加值

时间:2014-05-11 20:05:48

标签: java collections linked-list

我必须在列表的末尾添加一个元素,所以现在我使用 LinkedList addLast()函数来添加元素。它会在列表中添加元素,当且仅当后面没有 add()语句时才会添加。

以下工作正常。

LinkedList<String> ls = new LinkedList<String>();

    ls.add("C");
    ls.add("E");
    ls.add("D");
    ls.add("B");

    ls.addLast("F");            
    ls.addFirst("A");

    for( String l : ls )             
          System.out.println( l  );

在下面的情况下,在列表的结束处添加项目。

LinkedList<String> ls = new LinkedList<String>();

    ls.add("C");
    ls.add("E");
    ls.add("D");

    ls.addLast("F"); 
    ls.add("B");

    ls.addFirst("A");

    for( String l : ls )             
          System.out.println( l  );

但是, addFirst()无论您在何处调用它都能正常工作。

我怎么能做到这一点?任何建议请。

3 个答案:

答案 0 :(得分:1)

来自java docs:

public boolean add(E e)
Appends the specified element to the end of this list.
This method is equivalent to addLast(E).

Specified by:
add in interface Collection<E>
Specified by:
add in interface Deque<E>
Specified by:
add in interface List<E>
Specified by:
add in interface Queue<E>
Overrides:
add in class AbstractList<E>
Parameters:
e - element to be appended to this list
Returns:
true (as specified by Collection.add(E))

在您的情况下,您添加&#39; B&#39;在您添加&#39; F&#39;之后列表的末尾到列表的末尾

答案 1 :(得分:1)

  

“它不会在列表末尾添加项目。”

是的,它会在当前列表的末尾添加该项目。它不会做的就是让它永远持续下去。想象一下,如果你做了两次addLast(),哪一个会有优先权会发生什么?与addFirst()相同,它只适用于当前列表,如果你添加更多第一,其他的将不再是第一个。

答案 2 :(得分:0)

指定添加"B"的位置,例如ls.add(ls.size() - 1, "B");,然后将"F"添加到最后。