Descripción general de la colección de una sola columna de Java

Sistema de recopilación de Java

Colección

La colección es la implementación de nivel superior de una colección de una sola columna. Es una interfaz y proporciona los siguientes métodos

Nombre del método Descripción
suma booleana (E e) Agregar elemento
booleano eliminar (Objeto o) Eliminar el elemento especificado de la colección
vacío claro () Limpia los elementos de la colección.
booleano contiene (Objeto o) Determinar si el elemento especificado existe en la colección.
boolean isEmpty () Determinar si la colección está vacía
int tamaño () La longitud de la colección, que es el número de elementos de la colección.

Método de recorrido de la colección

  1. Atraviesa el iterador , la colección llama al método del iterador para obtener un objeto Iteratora, el iterador proporciona los siguientes métodos
  2. Mejorando el bucle for

para (tipo de datos de elemento nombre de variable: matriz / nombre de objeto de colección) { cuerpo del bucle;}

Nombre del método Descripción
booleano hasNext () Determinar si existe el siguiente elemento en el conjunto.
elemento siguiente () Obtén los elementos de la colección

Colección de listas

La lista sigue siendo una interfaz que proporciona una interfaz más detallada.

Características de la colección de listas :

  • Indexado
  • Puede almacenar elementos duplicados
  • Un método único para acceder a colecciones de listas ordenadas
Nombre del método descripción
añadir vacío (índice int, elemento E) Insertar el elemento especificado en la posición especificada en esta colección
E eliminar (índice int) Eliminar el elemento en el índice especificado y devolver el elemento eliminado
E conjunto (índice int, elemento E) Modifica el elemento en el índice especificado y devuelve el elemento modificado
E get (índice int) Devuelve el elemento en el índice especificado.

Introducción a ListIterator

  • Obtenido por el método listIterator () de la colección List, por lo que es un iterador único de la colección List
  • Un iterador de lista que permite al programador recorrer en cualquier dirección, modificar la lista durante la iteración y obtener la posición actual del iterador en la lista.

Excepción de modificación concurrente

  • La razón

    En el proceso de recorrido del iterador, los elementos de la colección se modifican a través del objeto de la colección, lo que hace que el iterador obtenga los elementos para determinar que el valor modificado esperado y el valor modificado real son inconsistentes, y aparecerá una ConcurrentModificationException:

  • Solución

    Use el bucle for para recorrer y luego use el objeto de colección para realizar la operación correspondiente


Implementación específica de la recopilación de listas

  1. Lista de arreglo
  2. Lista enlazada

Características:
ArrayList:

  • La capa inferior está implementada por una matriz.
  • Consulta rápida
  • Lento para agregar y eliminar

Lista enlazada:

  • La capa inferior está implementada por una lista vinculada
  • Consulta lenta
  • Agregar y eliminar rápidamente

Lista enlazada

Descripción general : al igual que la colección ArrayList, es la implementación específica de List

Método único

Nombre del método Descripción
public void addFirst (E e) Inserta el elemento especificado al principio de la lista.
public void addLast (E e) Agrega el elemento especificado al final de esta lista
public E getFirst () Devuelve el primer elemento de esta lista.
public E getLast () Devuelve el último elemento de esta lista.
public E removeFirst () Eliminar de esta lista y devolver el primer elemento
public E removeLast () Eliminar de esta lista y devolver el último elemento

Establecer colección

la colección de conjuntos es una interfaz

establecer características de colección:

  • Acceso desordenado a elementos
  • Sin índice, solo a través del iterador y mejorado para el recorrido
  • No se pueden almacenar elementos duplicados

Valor hash

  • Acerca del valor hash es un valor de tipo int JDK calculado según la dirección del objeto o el número o la cadena

  • Cómo obtener el valor hash

    Public int hashCode () en la clase Object: devuelve el valor del código hash del objeto

  • Características del valor hash

    • El valor hash devuelto al llamar al método hashCode () varias veces para el mismo objeto es el mismo
    • De forma predeterminada, los valores hash de diferentes objetos son diferentes. El método hashCode () se puede reescribir para hacer que el valor hash de diferentes objetos sea el mismo

HashSet

Características de la colección HashSet

  • La estructura de datos subyacente es una tabla hash
  • El orden iterativo de la colección no está garantizado, es decir, el orden de los elementos puede ser inconsistente con el almacenamiento.
  • No hay un método con índice, por lo que solo se puede recorrer a través del iterador o mejorar para el bucle
  • Dado que la interfaz Set está implementada, el set no puede almacenar elementos duplicados

El principio de la colección HashSet para garantizar la singularidad de los elementos.

1. Calcule la ubicación de almacenamiento según el valor hash del objeto

  • Si no hay ningún elemento en la posición actual, guárdelo directamente
  • Si hay un elemento en la posición actual, vaya al segundo paso

2. Compare el valor hash del elemento del elemento actual con el elemento existente.

  • Si el valor hash es diferente, almacena el elemento actual
  • Si los valores hash son los mismos, vaya al tercer paso

3. Compara el contenido de dos elementos mediante el método equals ()

  • Si el contenido no es el mismo, almacena el elemento actual

  • Si el contenido es el mismo, el elemento actual no se almacena

    Ilustración:

Inserte la descripción de la imagen aquí
Tabla de picadillo

Inserte la descripción de la imagen aquí

LinkedHashSet

Características de la colección LinkedHashSet

  • La interfaz Set implementada por la tabla hash y la lista vinculada tiene un orden de iteración predecible
  • El orden de los elementos está garantizado por la lista enlazada, lo que significa que el orden de almacenamiento y recuperación de los elementos es el mismo.
  • La tabla hash garantiza que el elemento es único, lo que significa que no hay elementos duplicados

TreeSet

  • Los elementos están ordenados y se pueden clasificar de acuerdo con ciertas reglas, y el método de clasificación específico depende del método de construcción.
    • TreeSet (): ordena según el orden natural de sus elementos
    • TreeSet (comparador comparador): ordena según el comparador especificado
  • No hay un método con índice, por lo que no puede usar el bucle for ordinario para atravesar
  • Dado que es una colección de conjuntos, no contiene una colección de elementos repetidos

castaña

package cn.dreamyi.demo1;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class StudentTest {
    
    
    public static void main(String[] args) {
    
    

        /**
         * List集合 元素有顺序 有索引的方法 元素可重复
         *      ArrayList 底层采用数组实现 容易查询 不易大量增删
         *      LinkedList底层采用链表实现 容易增删 不易大量查询
         *
         * Set集合 元素无序、没有索引、不能重复
         *      TreeSet 具有排序功能 无序
         *      HashSet 底层采用哈希表实现 无序 且唯一性
         *      LinkedHashSet 采用链表和哈希表实现 具有有序和元素不重复特点
         */

        /**
         * 案例需求
         *
         * - 用TreeSet集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合
         * - 要求:按照总分从高到低出现
         */
        TreeSet<Student> treeSet = new TreeSet<>(new Comparator<Student>() {
    
    
            @Override
            public int compare(Student o1, Student o2) {
    
    
                int i = o1.getAllScore() - o2.getAllScore();
                i = i==0? o1.getChinese() - o2.getChinese(): i;
                i = i==0? o1.getName().compareTo(o2.getName()) : i;
                return i;
            }
        });

        Student stu1 = new Student("zhangsan", 96, 98);
        Student stu2 = new Student("wangwu", 94, 98);
        Student stu3 = new Student("zhaoliu", 90, 100);
        Student stu4 = new Student("libai", 90, 100);
        Student stu5 = new Student("dufu", 95, 99);
        treeSet.add(stu1);
        treeSet.add(stu2);
        treeSet.add(stu3);
        treeSet.add(stu4);
        treeSet.add(stu5);

        Iterator<Student> iterator = treeSet.iterator();
        while (iterator.hasNext()) {
    
    
            Student stu = iterator.next();
            System.out.println(stu.getName() + ","
                    + stu.getChinese() + "," + stu.getMath() +","+stu.getAllScore());
        }

        System.out.println(treeSet.size());
    }
}




package cn.dreamyi.demo1;

public class Student{
    
    
    private String name;
    private int chinese;
    private int math;

    public Student() {
    
    
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getChinese() {
    
    
        return chinese;
    }

    public void setChinese(int chinese) {
    
    
        this.chinese = chinese;
    }

    public int getMath() {
    
    
        return math;
    }

    public void setMath(int math) {
    
    
        this.math = math;
    }

    public Student(String name, int chinese, int math) {
    
    
        this.name = name;
        this.chinese = chinese;
        this.math = math;
    }

    public int getAllScore(){
    
    
        return this.chinese + this.math;
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_42143994/article/details/113486929
Recomendado
Clasificación