`

Java中ArrayList和LinkedList集合

    博客分类:
  • Java
阅读更多
1. ArrayList集合

ArrayList集合
    add()方法,接收的是对象,不能放置原生数据类型,可以在指定的索引插入元素
    get()方法
    isEmpty()方法
    remove()方法,将删除的值返回,如果需要可以获取到
    clear()方法,清空集合
    indexOf()方法,查询索引值
    toArray()方法,接收数组时要强制转换成对应的类型,不能将Object[]转换为Integer[]。所以要在遍历数组的时候将Object类型转换成Ingeter类型。
    
1. ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组。
2. 如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的 1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
3. 集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中。
4. 集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。

import java.util.ArrayList;
public class ArrayListTest2{
    public static void main(String[] args){
        ArrayList list = new ArrayList();
        list.add("hello");
        list.add(new Integer(2));
        String str = (String)list.get(0);
        Integer in = (Integer)list.get(1);
        System.out.println(str);
        System.out.println(in.intValue());
    }
}
运行结果:
hello
2


2. LinkedList集合

LinkedList集合
    add()方法
    addLast()方法
    addFirst()方法
    addLast()方法
    remove()方法
    set()方法
    
import java.util.LinkedList;
public class LinkedListTest {
    public static void main(String[] args){
        LinkedList list = new LinkedList();
        list.add("F");
        list.add("B");
        list.add("D");
        list.add("E");
        list.add("C");
        list.addLast("Z");
        list.addFirst("A");
        list.add(1, "A2");
        System.out.println("最初的集合:" + list);
        
        list.remove("F");
        list.remove(2);
        System.out.println("变化之后的集合:" + list);
        
        Object value = list.get(2);
        list.set(2, (String)value + "changed");
        System.out.println("最后的集合:" + list);        
    }
}
运行结果:
最初的集合:[A, A2, F, B, D, E, C, Z]
变化之后的集合:[A, A2, D, E, C, Z]
最后的集合:[A, A2, Dchanged, E, C, Z]


3. ArrayList和LinkedList比较

1. ArrayList是实现了基于动态数组的数据结构,LinkedList是基于双向链表结构。

2. 对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。

3. 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

4. 对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。
   对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;
   对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。

5. 在ArrayList集合中添加或者删除一个元素时,当前的列表所所有的元素都会被移动。而LinkedList集合中添加或者删除一个元素的开销是固定的。

6. LinkedList集合不支持高效的随机随机访问(RandomAccess),因为可能产生二次项的行为。

7. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
分享到:
评论

相关推荐

    Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度1

    在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们各自具有不同的特性和适用场景,主要体现在数据结构、访问效率和操作性能上。 1. 数据结构: - ArrayList 实现了一个动态数组,它内部是一个 Object...

    Java中ArrayList和LinkedList区别

    在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组的...

    ArrayList和Linkedlist1

    在IT领域,特别是Java编程中,ArrayList和LinkedList是两种非常重要的数据结构,它们都是List接口的实现类。理解这两者的区别对于优化程序性能至关重要。面试官询问这些知识点,旨在评估应聘者的理论基础和实践能力...

    关于arraylist和linkedList的区别

    在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能特点以及适用场景等方面存在显著差异。 ...

    ArrayList LinkedList Vector区别

    Collection 接口是 Java 中最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素(Elements)。Collection 接口提供了两个标准的构造函数:无参数的构造函数用于创建一个空的 Collection,有一...

    java中ArrayList与LinkedList对比详情

    本文将通过实例对比 Java 中 ArrayList 和 LinkedList 的实现机制、性能差异、优缺点等方面的区别,帮助读者更好地理解和选择合适的集合实现方式。 一、实现机制 ArrayList 的内部采用数组的方式存储数据,唯一...

    Java 各种集合的区别ArrayList Vector LinkedList map区别

    今天,我们将深入了解 Java 中的集合类别,包括 ArrayList、Vector、LinkedList 和 Map 等。 ArrayList ArrayList 是一种基于数组的集合类别,它可以存储大量的数据。ArrayList 的特点是:它可以动态地增加或减少...

    ArrayList LinkedList Vector性能对比

    2. **线程安全**:ArrayList和LinkedList不是线程安全的,如果在多线程环境中使用,需要手动添加同步机制,或者选择Vector。 3. **内存消耗**:LinkedList比ArrayList和Vector占用更多的内存,因为它需要存储额外的...

    java中LinkedList集合类实现栈和队列.doc

    在Java编程语言中,LinkedList集合类是一个非常重要的数据结构,它可以用来实现栈和队列这两种特殊的数据结构。LinkedList是一个双链表,每个节点包含数据元素和两个引用,分别指向前后节点,这使得在列表中进行插入...

    java集合类详解(set list ArrayList等java集合类详述)

    迭代器(Iterator)提供了一种通用的方式来访问集合中的元素。迭代器的工作原理是通过 next() 方法返回元素,并可以通过 remove() 方法删除元素。 Collections 类提供了一些有用的方法,如排序、取最大和最小的元素...

    arraylist-linkedlist-test.zip

    ArrayList和LinkedList是Java集合框架中两种重要的动态数组实现,它们都是List接口的实现类,但它们在存储和操作数据方面有着显著的区别。本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作...

    合理运用ArrayList与LinkedList

    如果集合中元素需要频繁地添加、删除,特别是在列表的中间位置,LinkedList因其高效的增删操作而更适合。在实际开发中,ArrayList由于其在数据展示(通常是大量的读取操作)上的优势,使用频率更高。然而,在某些...

    当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

    在 Java 中,ArrayList 和 LinkedList 是两个常用的集合类,它们都是 List 接口的实现类,但它们之间有着鲜明的区别。今天,我们将深入探讨这两个集合类的实现原理和比较。 ArrayList 的实现原理 ArrayList 是基于...

    ArrayList LinkedList Vector性能测试

    在Java编程语言中,ArrayList、LinkedList和Vector是三种常见的动态数组实现,它们都在java.util包中,用于存储和管理对象的集合。这三个类都实现了List接口,提供了多种操作方法,但它们在内部实现和性能特性上有所...

    java基础--list(ArrayList、LinkedList、匿名类).docx

    综上所述,理解并熟练运用List接口、ArrayList和LinkedList的不同特性,以及如何使用匿名类,对于编写高效的Java代码至关重要。在实际开发中,根据具体需求选择合适的数据结构,可以提高程序性能并降低复杂度。同时...

    ArrayList-LinkedList-源码.rar

    在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现机制,通过源码分析来揭示它们在性能、...

    Map+List+ArrayList+LinkedList Java源码

    Java编程语言中的`Map`, `List`, `ArrayList` 和 `LinkedList` 是四个核心的数据结构,它们在实际开发中被广泛使用。了解它们的源码对于深入理解Java集合框架的内部工作原理至关重要,尤其是对初学者而言,这有助于...

    Java集合系列(LinkedHashMap+LinkedList+ArrayList)

    今天,我们将介绍 Java 集合系列中的三个重要成员:LinkedHashMap、LinkedList 和 ArrayList。 LinkedHashMap LinkedHashMap 是 Java 集合系列中的一种哈希表实现,继承自 HashMap。它的主要特点是可以维护元素的...

    区分Java中的ArrayList和LinkedList

    在Java中,ArrayList和LinkedList都是List接口的实现,它们都是存储一组不唯一、有序(插入顺序)的对象的集合。然而,它们在数据结构、性能和使用场景方面存在着很大的区别。 ArrayList ArrayList是基于动态数组...

    比较ArrayList、LinkedList、Vector1

    List接口是Java集合框架中的重要组成部分,它是一个有序的集合,允许重复元素,并且保持插入顺序。List接口的实现类主要有ArrayList、LinkedList和Vector。 2. **ArrayList** - **实现原理**:ArrayList基于动态...

Global site tag (gtag.js) - Google Analytics