El uso y la diferencia entre ArrayList y LinkedList clase

Lista es un conjunto ordenado, repetible, cada elemento de colección tiene su correspondiente índice de secuencia. Lista permite repitió elemento de la colección, la colección se puede acceder por el elemento en el índice especificado. configuración predeterminada Lista establecidos por el orden de adición del índice de elemento del elemento, un primer elemento de índice añaden al conjunto Lista a 0, la segunda 1, y así sucesivamente.

Lista implementa la interfaz Collection, que tiene dos principales clase de implementación común: la categoría de clase ArrayList y LinkedList.

clase ArrayList

implementos clase ArrayList una matriz de tamaño variable, que incluye un elemento de almacenamiento de datos se llama. También proporciona una forma rápida de elementos de acceso basado en el índice, para añadir y eliminar la cola de los miembros de la ayuda es buena. Uso colección ArrayList fue creado para permitir la colección de elementos de acceso aleatorio rápido, sin embargo, insertar y elementos de borrado de ArrayList relativamente lentos.

Clase ArrayList común sobrecargas del constructor dos formas de la siguiente manera:

	ArrayList():构造一个初始容量为 10 的空列表。
	
	ArrayList(Collection<?extends E>c):构造一个包含指定 Collection 元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。

clase ArrayList contiene todos los métodos distintos de la interfaz Collection, el método comprende además la siguiente interfaz lista de la tabla proporcionada en la figura.

nombre del método explicación
E get (int index) Obtener el índice especificado de este conjunto de elementos, E es el tipo de elementos de datos en un conjunto
int index (Object o) Las devoluciones aparece por primera vez el índice del elemento de la colección especificada. Si este conjunto contiene el elemento, o -1
int lastIndexOf (Object o) Devuelve el índice del elemento especificado en la última aparición de este conjunto, si este conjunto contiene el elemento, o -1
conjunto E (int index, Eelement) ubicación del índice especificado en esta colección de elementos para modificar los parámetros especificados para el elemento de destino. Este método devuelve el índice especificado en esta colección de elementos originales
Lista subLista (int fromlndex, int tolndex) Devuelve una nueva colección, nueva colección contiene todos los elementos entre fromlndex y el índice tolndex. Contiene elementos fromlndex a, que no contiene el elemento en el índice tolndex

prestar atención: Cuando se llama Lista de conjunto (int index, elemento Object) método para cambiar el elemento de la colección de lista en el índice especificado, el índice especificado debe ser una colección Lista índice válido. 4 se establece, por ejemplo, la longitud no se puede especificar en el elemento de índice de sustitución 4, es decir, este enfoque no cambia la longitud de un conjunto de Lista.

Utilizar una clase ArrayList para añadir a la colección en tres información del producto, incluyendo el número de producto, el nombre y el precio, entonces la salida de estos productos a través de la recopilación de información.

1. Crear un producto básico, y define tres atributos de los métodos toString () de la clase, colocador / métodos getter fueron alcanzados. código de implementación de la siguiente manera:

public class Product {
    // 商品类
    private int id; // 商品编号
    private String name; // 名称
    private float price; // 价格

    public Product(int id, String name, float price) {
        this.name = name;
        this.id = id;
        this.price = price;
    }

    // 这里是上面3个属性的setter/getter方法,这里省略
    public String toString() {
        return "商品编号:" + id + ",名称:" + name + ",价格:" + price;
    }
}

2. Crear una clase de prueba, llamando al constructor de la clase de producto instancia tres objetos, y guardar los objetos de la colección del producto ArrayList. El último paseo a través de la colección, la información producto de salida. Para lograr lo siguiente:

public class Test {
    public static void main(String[] args) {
        Product pd1 = new Product(4, "木糖醇", 10);
        Product pd2 = new Product(5, "洗发水", 12);
        Product pd3 = new Product(3, "热水壶", 49);
        List list = new ArrayList(); // 创建集合
        list.add(pd1);
        list.add(pd2);
        list.add(pd3);
        System.out.println("*************** 商品信息 ***************");
        for (int i = 0; i < list.size(); i++) {
            // 循环遍历集合,输出集合元素
            Product product = (Product) list.get(i);
            System.out.println(product);
        }
    }
}

ArrayList conjunto en este ejemplo se almacena en el objeto clase personalizada del producto, la cadena de clase de objeto almacenado es el mismo. Establecer la diferencia es que el conjunto método presencia get () Lista, se puede obtener por el método correspondiente al valor del índice, el valor adquirido de la clase Object, es necesario convertir la clase de valor del producto, a fin de obtener información sobre los productos.

resultado de ejecución del procedimiento se muestra a continuación.

*************** 商品信息 ***************
商品编号:4,名称:木糖醇,价格:10.0
商品编号:5,名称:洗发水,价格:12.0
商品编号:3,名称:热水壶,价格:49.0

Tenga en cuenta que distingue el método indexOf () y el método lastIndexOf () utilizando la colección de lista. El primero es para obtener la ubicación del índice mínimo objeto especificado, qué objeto es obtener la posición de índice máximo especificado . Siempre que el objeto especificado tiene un duplicado de la colección de objetos de lista, estos dos métodos de otra manera idéntica para obtener el valor del índice.

() Y la diferencia entre los métodos de ejemplo de método indexOf lastIndexOf ().

public static void main(String[] args) {
    List list = new ArrayList();
    list.add("One");
    list.add("|");
    list.add("Two");
    list.add("|");
    list.add("Three");
    list.add("|");
    list.add("Four");
    System.out.println("list 集合中的元素数量:" + list.size());
    System.out.println("list 集合中的元素如下:");
    Iterator it = list.iterator();
    while (it.hasNext()) {
        System.out.print(it.next() + "、");
    }
    System.out.println("\n在 list 集合中'丨'第一次出现的位置是:" + list.indexOf("|"));
    System.out.println("在 list 集合中'丨'最后一次出现的位置是:" + list.lastIndexOf("|"));
}

El código para crear una lista de colecciones de lista, y luego añadir siete elementos, ya que el índice comienza en 0, por lo que el último índice del elemento 6. salida:

list 集合中的元素数量:7
list 集合中的元素如下:
One、|、Two、|、Three、|、Four、
在 list 集合中'|'第一次出现的位置是:1
在 list 集合中'|'最后一次出现的位置是:5

Se debe utilizar con el método subLista () Lista de los elementos de sección de la colección tomadas, los nuevos elementos del conjunto contiene la posición de inicio del índice, pero el índice no contiene la posición final del elemento. Por ejemplo, subLista (1,4) es el método del índice tomada realmente 1 a 3 de elementos de índice, y formar un nuevo conjunto de Lista.

Detallado El método de uso subLista ().

public static void main(String[] args) {
    List list = new ArrayList();
    list.add("One");
    list.add("Two");
    list.add("Three");
    list.add("Four");
    list.add("Five");
    list.add("Six");
    list.add("Seven");
    System.out.println("list 集合中的元素数量:" + list.size());
    System.out.println("list 集合中的元素如下:");
    Iterator it = list.iterator();
    while (it.hasNext()) {
        System.out.print(it.next() + "、");
    }
    List sublist = new ArrayList();
    sublist = list.subList(2, 5); // 从list集合中截取索引2~5的元素,保存到sublist集合中
    System.out.println("\nsublist 集合中元素数量:" + sublist.size());
    System.out.println("sublist 集合中的元素如下:");
    it = sublist.iterator();
    while (it.hasNext()) {
        System.out.print(it.next() + "、");
    }
}

salida:

list 集合中的元素数量:7
list 集合中的元素如下:
One、Two、Three、Four、Five、Six、Seven、
sublist 集合中元素数量:3
sublist 集合中的元素如下:
Three、Four、Five、

clase LinkedList

clase LinkedList objetos almacenados estructura de lista enlazada, la ventaja de esta estructura es fácil de insertar o elementos de eliminación en la colección. Cuando la colección a menudo insertar y eliminar utilizando elementos de alto efecto análogo clase LinkedList ArrayList, pero el acceso aleatorio elemento de la clase LinkedList velocidad es relativamente lenta. Random elemento de recuperación de acceso aquí se refiere a un conjunto particular de posición de índice.

Además de contener clase LinkedList interfaz lista de colecciones y todos los métodos de interfaz, sino que también proporciona en el método de un particular que se muestra en la siguiente tabla.

nombre del método explicación
addFirst vacío (E e) Agrega el elemento especificado a esto al comienzo de la colección
addLast vacío (E e) Añade el elemento especificado al final de la colección
E GetFirst () Devuelve el primer elemento de esta colección
E getLast () Devuelve el último elemento de esta colección
E removeFirst () Elimina el primer elemento de esta colección
E removeLast () Elimina el último elemento de esta colección

En el sistema de gestión de almacenes a los nombres comerciales récord almacenamiento y enviar la mercancía nombre y última entrada - un nombre comercial. Acabado el conjunto de funciones que se utilizan LinkedList, de la siguiente manera:

public class Test {
    public static void main(String[] args) {
        LinkedList<String> products = new LinkedList<String>(); // 创建集合对象
        String p1 = new String("六角螺母");
        String p2 = new String("10A 电缆线");
        String p3 = new String("5M 卷尺");
        String p4 = new String("4CM 原木方板");
        products.add(p1); // 将 p1 对象添加到 LinkedList 集合中
        products.add(p2); // 将 p2 对象添加到 LinkedList 集合中
        products.add(p3); // 将 p3 对象添加到 LinkedList 集合中
        products.add(p4); // 将 p4 对象添加到 LinkedList 集合中
        String p5 = new String("标准文件夹小柜");
        products.addLast(p5); // 向集合的末尾添加p5对象
        System.out.print("*************** 商品信息 ***************");
        System.out.println("\n目前商品有:");
        for (int i = 0; i < products.size(); i++) {
            System.out.print(products.get(i) + "\t");
        }
        System.out.println("\n第一个商品的名称为:" + products.getFirst());
        System.out.println("最后一个商品的名称为:" + products.getLast());
        products.removeLast(); // 删除最后一个元素
        System.out.println("删除最后的元素,目前商品有:");
        for (int i = 0; i < products.size(); i++) {
            System.out.print(products.get(i) + "\t");
        }
    }
}

Como el código anterior, primero crear un objeto String 5, respectivamente, p1, p2, p3, p4 y p5. Mientras que p1, p2, p3, p4 y el objeto usando add () método LinkedList añadido a la colección, utilice método addLast () para añadir objetos a la colección p5 LinkedList. Se GetFirst método class LinkedList () y el método getLast () llamar para obtener el primer y el último nombre mercancía. Por último, utilice el método removeLast () para borrar la última información del producto, e imprimir la información del producto restante.

LinkedList es genéricos en Java, el tipo de datos especificado colección de elementos, tales como elementos de tipo cadena especificada aquí, no es la adición de no-colección de elementos de tipo String.

Ejecutar el programa de resultados de la ejecución son los siguientes:

*************** 商品信息 ***************
目前商品有:
六角螺母    10A 电缆线    5M 卷尺    4CM 原木方板    标准文件夹小柜   
第一个商品的名称为:六角螺母
最后一个商品的名称为:标准文件夹小柜
删除最后的元素,目前商品有:
六角螺母    10A 电缆线    5M 卷尺    4CM 原木方板

las diferencias de clase ArrayList y LinkedList clase

ArrayList y LinkedList son la clase de implementación de interfaz de lista, por lo que han logrado todos los métodos de lista no realizada, la única manera de lograr diferentes.

ArrayList estructura de datos matriz dinámica se basa en la velocidad de acceso de la LinkedList elementos. Lista enlazada es una estructura de datos de lista vinculada para lograr basándose en el espacio de memoria ocupado por un número relativamente grande, pero mejor que el ArrayList cuando la inserción masiva de datos o borrado.

La demanda de un acceso rápido a los objetos, sería mejor usar ArrayList lograr la eficiencia. Requerir inserción frecuente y elementos de borrado cuando se utiliza alta ArrayList LinkedList efecto de clase análoga a la colección.

Diferentes estructuras corresponden a diferentes algoritmos, considerar ahorrar algo de espacio, algunos consideran que el aumento de la eficiencia operativa, para los programadores, que son como una "pata de oso" y "pescado" no se puede tener ambas cosas. Alta velocidad de funcionamiento es a menudo a expensas del espacio por el precio, mientras que el ahorro de espacio es a menudo a expensas de la velocidad para el precio.

Publicados 457 artículos originales · ganado elogios 94 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_45743799/article/details/104714586
Recomendado
Clasificación