首页 > 试题广场 >

LinkedList在内部维护了一个双向循环链表,每一个元素

[单选题]
LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用。这句话是否正确?
  • 正确
  • 错误
推荐
选A
【分析】

    LinkedList是通过节点直接彼此连接来实现的。
    每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值
    当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
    操作其中对象的速度快,只需要改变连接,新的节点可以在内存中的任何地方,不能随机访问,虽然存在get()方法,但是这个方法是通过遍历节点来定位的所以相对ArrayList来说速度更慢。
编辑于 2019-04-13 16:35:47 回复(2)
更多回答
选A。该题考查的是LinkedList源码实现原理。
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable  
  private transient Entry<E> header = new Entry<E>(null, null, null);//LinkedList类的实例对象
LinkedList的成员header是双向链表的表头,它是双向链表节点所对应的类Entry的实例。Entry中包含成员变量: previous, next, element。其中,previous是该节点的上一个节点next是该节点的下一个节点,element是该节点所包含的值。
正是因为这样的存储结构所以LinkedList集合对于元素的增删操作具有很高的效率
发表于 2019-04-11 15:24:57 回复(0)

😊选A.


package pk_01;
 
import java.util.Iterator;
import java.util.LinkedList;
 
public class Example02 {
 
    public static void main(String[] args) {
        LinkedList<String> link=new LinkedList<String>();
        link.add("stu1");
        link.add("stu2");
        link.add("stu3");
        link.add("stu4");
        System.out.println(link.toString());//打印出该集合中的元素
        link.add(3, "studnet");//在集合指定位置插入元素
        System.out.println(link.toString());
        link.addFirst("first");//在集合第一个位置插入元素
        System.out.println(link.toString());
        link.addLast("last");//在集合最后一个位置插入元素
        System.out.println(link.toString());
        System.out.println(link.getFirst());
        link.remove(3);//移除该集合中指定的元素
        System.out.println(link.toString());
        link.removeLast();//移除第一个元素
        System.out.println(link.toString());
        Iterator<String> it=link.iterator();
        while (it.hasNext()) {
            Object obj=it.next();
            System.out.println(obj);
            
        }
 
    }
 
}
发表于 2019-04-29 19:11:03 回复(0)