`
bmqnc
  • 浏览: 127487 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

LinkedList中addAll(int index, Collection<? extends E> c)函数分析

    博客分类:
  • java
阅读更多
 public boolean addAll(int index, Collection<? extends E> c) {
        if (index < 0 || index > size)
            throw new IndexOutOfBoundsException("Index: "+index+
                                                ", Size: "+size);
        Object[] a = c.toArray();
        int numNew = a.length;
        if (numNew==0)
            return false;
	modCount++;

        Entry<E> successor = (index==size ? header : entry(index));
        Entry<E> predecessor = successor.previous;
	for (int i=0; i<numNew; i++) {
            Entry<E> e = new Entry<E>((E)a[i], successor, predecessor);
            predecessor.next = e;
            predecessor = e;
        }
        successor.previous = predecessor;

        size += numNew;
        return true;
    }


这个函数也很无敌,关键是collection插入的时候保持了有序,主要是那个for循环体里面,后继的元素都在之前被插入的元素之后插入,所以能保持有序。
分享到:
评论

相关推荐

    LinkedList源码分析_016.pdf

    extends E&gt;)和addAll(int, Collection&lt;? extends E&gt;)。后者允许我们在链表的特定位置插入一个集合的所有元素,而前者实际上会调用后者,通过传入索引为size的位置,实现在链表末尾添加元素。 addAll(int, ...

    TreeMap<K,V>类以及LinkedList<E>

    7_4.有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集...编写一个应用程序,要求将LinkedList&lt;E&gt;创建的对象写入到文件,然后读出一个LinkedList&lt;E&gt;对象,并遍历LinkedList&lt;E&gt;节点中的数据

    LinkedList 部分源码

    Node&lt;E&gt; newNode = new Node&lt;&gt;(pred, e, null); if (pred == null) first = newNode; else pred.next = newNode; pred = newNode; } if (succ == null) { last = pred; } else { pred.next = succ; succ...

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    private LinkedList&lt;E&gt; elements = new LinkedList&lt;&gt;(); ``` **构造方法**: ```java public Stack() { // 初始化空栈 } ``` **入栈(push)方法**: ```java public void push(E element) { elements.addFirst...

    JAVA 8 Stream 4.rar

    Java 8 Stream API是Java开发中的一个重要特性,它引入了一种新的处理数据的方式,使得对集合数据的操作更加高效、简洁。Stream API与传统的for-each循环不同,它提供了函数式编程风格,允许开发者以声明性方式处理...

    Java容器框架 collection集合

    extends E&gt; c)`: 向集合中添加指定集合的所有元素。 - `void clear()`: 清空集合中的所有元素。 - `boolean removeAll(Collection&lt;?&gt; c)`: 移除集合中与指定集合共有的所有元素(即求集合的差集)。 - `boolean ...

    LIStinterface.zip

    extends E&gt; c)`: 在列表末尾添加另一个集合的所有元素。 10. `iterator()`: 返回一个迭代器,用于遍历列表中的元素。 List接口还有两个主要的实现类:ArrayList和LinkedList。ArrayList基于动态数组实现,适合随机...

    关于java基础的泛型的练习

    - 泛型类的实例化必须提供实际类型参数,如`MyList&lt;String&gt; list = new MyList&lt;&gt;();` - 对于无参构造的泛型类,可以使用匿名内部类的方式省略尖括号,如`new MyList&lt;String&gt;() {}`。 9. 泛型和静态方法: - 泛型...

    黑马程序员java培训就业班笔记集合体系总结.docx

    对于List,还有一些特有的方法,如`get(int index)`用于获取指定索引处的元素,`set(int index, E element)`用于替换指定索引处的元素,以及`add(int index, E element)`用于在指定位置插入元素。 3. Set接口: ...

    深入Java集合学习系列(三):ArrayList实现原理

    extends E&gt; c)和addAll(int index, Collection&lt;? extends E&gt; c)方法则用于添加整个集合中的元素。 在扩容操作中,ensureCapacity(int minCapacity)是一个非常关键的方法。它会检查ArrayList的当前容量是否满足所需...

    scjp(310-065 part03)

    List&lt;Object&gt; listO = new LinkedList&lt;Object&gt;(); // 插入代码此处 } public static void m1(List&lt;? extends A&gt; list) {} public static void m2(List&lt;A&gt; list) {} } ``` 需要在第9行插入不同的方法调用,...

    OCJP考试最新300题

    例如,将方法声明从 "sum(List list)" 修改为 "sum(List&lt;Integer&gt; intList)",这就是泛型用法中的类型声明,其中 &lt;&gt; 符号内填写的是类型参数,这里用Integer来明确指出集合中存储的对象类型。 Java集合框架的使用和...

    详解JAVA中的Collection接口和其主要实现的类

    extends E&gt; c) 添加指定Collection中的所有元素到此列表的结尾,顺序是指定Collection的迭代器返回这些元素的顺序。 * boolean addAll(int index, Collection&lt;? extends E&gt; c) 将指定Collection中的所有元素从指定...

    Java基于JDK 1.8的LinkedList源码详析

    LinkedList提供了多种添加元素的方法,包括`add(E e)`、`add(int index, E element)`、`addAll(Collection&lt;? extends E&gt; c)`等。添加元素时,LinkedList会根据当前链表的大小和添加的元素位置来确定添加的位置,并...

    java+泛型.pdf

    List&lt;Integer&gt; myIntList = new LinkedList&lt;&gt;(); myIntList.add(new Integer(0)); Integer x = myIntList.iterator().next(); ``` 在泛型版本中,类型转换是不必要的,编译器会自动检查类型一致性,避免了运行时可能...

    java泛型的内部原理及更深应用

    例如,使用`&lt;&gt;`钻石操作符,如`List&lt;String&gt; list = new ArrayList&lt;&gt;();`,编译器会自动推断出列表的类型。 7. **泛型方法**:除了泛型类,我们还可以定义泛型方法,方法的返回类型和参数列表可以包含类型参数。这...

    java集合与泛型[参考].pdf

    extends E&gt; c)`:将另一集合的所有元素添加到当前集合中。 - `removeAll(Collection&lt;?&gt; c)`:从当前集合中移除另一集合的所有元素。 - `retainAll(Collection&lt;?&gt; c)`:保留当前集合中存在于另一集合中的元素,...

    Java Generics and Collections

    extends T&gt;`和`&lt;? super T&gt;`允许你编写更通用的代码,提高代码重用性。 1. **无界通配符**:`&lt;?&gt;`表示任意类型,可以用于读取但不能修改集合元素。 2. **上限通配符**:`&lt;? extends T&gt;`表示类型T或其子类,常用于...

    java常见类源码及注释.doc

    - `Iterator&lt;E&gt; iterator()`: 获取集合的迭代器,用于遍历集合中的元素。 - `Object[] toArray()`: 将集合转换为对象数组。 - `&lt;T&gt; T[] toArray(T[] a)`: 将集合转换为特定类型的数组。 **2. 添加和移除元素** - `...

Global site tag (gtag.js) - Google Analytics