Marco de recopilación avanzado intermedio de Java


Escribir al frente

Hola a todos, hoy continuaré actualizando Java Intermediate Advanced. La razón por la que se actualiza cada dos días es porque me tomé un día para recopilar y organizar los puntos de conocimiento para compartir. Al recopilar, personalmente valoro si vale la pena clasificar los puntos de conocimiento en sí mismos y luego vincular estos puntos de conocimiento ordenados con una "línea". Primero, es conveniente para uno mismo recordar y usar; segundo, compartir con otros para que los demás parezcan más organizados. "Al final del artículo, hay un vínculo jerárquico y organizado de mis puntos de conocimiento originales, y la estructura de los puntos de conocimiento es más clara".

Marco de recopilación avanzado intermedio de Java

Marco de colección JAVA

1. ArrayList

1.1 La diferencia entre ArrayList y array


Limitaciones de las matrices:

① Si desea almacenar varios objetos, puede utilizar matrices, pero las matrices tienen limitaciones. Si excede la longitud de la matriz, no encajará y la matriz se desperdiciará si no está llena.

Código:


 1//先声明一个学生类(Student.java)
 2public class Student {
 3   public String name;
 4   public Student () {
 5   }
 6// 增加一个初始化name的构造方法
 7public Student (String name) {
 8   this.name = name;
 9}
10// 重写toString方法
11public String toString() {
12   return name;
13   }
14}
15//数组的局限性,声明测试类(Test.java)
16//声明长度是5的数组
17Student Student [] = new Student [5];
18//不用的数组就浪费了
19Student [0] = new Student ("张三");
20//放不下要报错
21Student [20] = new Student ("李四");

ArrayList almacena objetos:

① Para resolver las limitaciones de las matrices, se introduce el concepto de clases contenedoras. La clase de contenedor más común es ArrayList.

② La capacidad del contenedor ArrayList aumentará automáticamente con el aumento de objetos

③Simplemente siga agregando objetos de estudiantes al contenedor, no se preocupe por el problema de los límites de la matriz.

Código:


1//容器类 ArrayList,用于存放对象
2ArrayList student = new ArrayList();
3student .add( new Student ("张三"));
4System.out.println(student .size());
5//只需要不断往容器里增加学生即可,不用担心会出现数组的边界问题。
6student .add( new Student ("李四"));
7System.out.println(student .size());

1.2 Métodos comunes

① agregue "dos métodos"

☛Agregue el objeto directamente y agregue el objeto al final: student.add (new Student ("nombre"));

☛Añadir objetos en la ubicación especificada: student.add (3, "李四");

Código:


 1ArrayList students= new ArrayList();
 2// 把5个对象加入到ArrayList中
 3for (int i = 0; i < 5; i++) {
 4studenst.add(new Student("student" + i));
 5}
 6System.out.println(studenst);
 7// 在指定位置增加对象
 8Student stu = new Student("李四");
 9studenst.add(3, stu );
10System.out.println(studenst.toString());

② contiene para determinar si existe

☛ Determinar si un objeto está en el contenedor mediante el método contiene.

☛ Criterios de juicio: si es el mismo objeto, no si el nombre es el mismo.

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
 6Student stu = new Student ("李四");
 7students.add(stu );
 8System.out.println(students);
 9// 判断一个对象是否在容器中
10// 判断标准: 是否是同一个对象,而不是name是否相同
11System.out.print("虽然一个新的对象名字也叫 student1,但是contains的返回是:");
12System.out.println(students.contains(new Student("student1")));
13System.out.print("而对stu 的判断,contains的返回是:");
14System.out.println(students.contains(stu));
15}

③ obtener Obtiene el objeto en la ubicación especificada

☛Obtener el objeto en la posición especificada a través de get. Si el subíndice de entrada está fuera de los límites, se informará un error.

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
  Studentstu= new Student("李四");
 7students.add(stu);
 8//获取指定位置的对象
 9System.out.println(students.get(5));
10//如果超出了范围,依然会报错
11System.out.println(students.get(6));

④ indexOf obtiene la posición del objeto

☛ indexOf se utiliza para determinar la posición de un objeto en ArrayList.

☛ Como contiene, el criterio de juicio es si los objetos son iguales, no si los valores de nombre de los objetos son iguales.

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
 6Student stu = new Student("李四");
 7students.add(stu );
 8System.out.println(students);
 9System.out.println("stu所处的位置:"+students.indexOf(stu));
10System.out.println("新的学生,但是名字是\"student1\"所处的位置:"+students.indexOf(new Student("student1")));

⑤ eliminar eliminar

☛ eliminar se utiliza para eliminar objetos de ArrayList: estudiantes.remove (2);

☛ remove puede eliminar elementos de ArrayList de acuerdo con el subíndice (objeto): estudiantes.remove (stu);

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
 6Student stu= new Student("李四");
 7students.add(stu);
 8System.out.println(students);
 9students.remove(2);
10System.out.println("删除下标是2的对象");
11System.out.println(students);
12System.out.println("删除李四");
  students.remove(stu);
14System.out.println(students);

⑥ conjunto de reemplazo

☛ set se usa para reemplazar el elemento en la posición especificada

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
 6Student stu= new Student ("李四");
 7students.add(stu);
 8System.out.println(students);
 9System.out.println("把下标是5的元素,替换为\"student5\"");
10students.set(5, new Student("student5"));
11System.out.println(students);
12}

⑦ tamaño Obtener tamaño

☛ size se usa para obtener el tamaño de ArrayList

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Students("student" + i));
 5}
 6Students stu= new Students("李四");
 7students.add(stu);
 8System.out.println(students);
 9System.out.println("获取ArrayList的大小:");
10System.out.println(students.size());

⑧ toArray se convierte en una matriz

☛ toArray puede convertir un objeto ArrayList en una matriz.

☛ Nota: Si desea convertir a una matriz Student, debe pasar un objeto del tipo de matriz Student a toArray (), para que el método toArray sepa a qué tipo de matriz desea convertir; de lo contrario, solo puede convertir a una matriz de objetos

Código:

 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Students("student" + i));
 5}
 6Student stu= new Student ("李四");
 7students.add(stu);
 8System.out.println(students);
 9Student st[] = (Student[])students.toArray(new Student []{});
10System.out.println("数组:" +st);

⑨ addAll agrega todos los objetos en otro contenedor

☛ addAll agrega todos los objetos en otro contenedor

Código:


 1ArrayList students= new ArrayList();
 2// 初始化5个对象
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student" + i));
 5}
 6System.out.println("ArrayList heros:\t" + students);
 7//把另一个容器里所有的元素,都加入到该容器里来
 8ArrayList anotherstudents = new ArrayList( );
 9anotherstudents .add(new Student("student a"));
10anotherstudents .add(new Student("student b"));
11anotherstudents .add(new Student("student c"));
12System.out.println("anotherstudents students:\t" + anotherstudents );
13students.addAll(anotherstudents );
14System.out.println("把另一个ArrayList的元素都加入到当前 ArrayList:");
15System.out.println("ArrayList students:\t" + students);

⑩ claro

☛ borrar Clear an ArrayList

Código:


1ArrayList students= new ArrayList();
2// 初始化5个对象
3for (int i = 0; i < 5; i++) {
4students.add(new Student("student" + i));
5}
6System.out.println("ArrayList students:\t" + students);
7System.out.println("使用clear清空");
8students.clear();
9System.out.println("ArrayList students:\t" + students);

1.3 Interfaz de lista

ArrayList 和 List :

① ArrayList implementa la interfaz List.

② La forma común de escribir declarará la referencia como el tipo de lista de interfaz.

③ Nota: es java.util.List, no java.awt.List.

Código:


 1import java.util.ArrayList;
 2import java.util.List;
 3import charactor.Student;
 4public class TestCollection {
 5public static void main(String[] args) {
 6//接口引用指向子类对象(多态)
 7List students = new ArrayList();
 8students .add( new Student("李四"));
 9System.out.println(students .size());
10}
11}

Métodos de la interfaz List:

① Debido a que ArrayList implementa la interfaz List, se implementan todos los métodos de la interfaz List ArrayList.

② Hay una explicación detallada en el capítulo de métodos comunes de ArrayList

1.4 Interfaz de lista

Genérico:

① No especifique un contenedor genérico, puede almacenar cualquier tipo de elemento

② Se especifica un contenedor genérico, que solo puede almacenar elementos del tipo especificado y sus subclases

Abreviatura de genérico:

① Para que el compilador no advierta, debe usar genéricos antes y después

1List <Student> gen = new ArrayList <Student> ();
② Sin embargo, JDK7 proporciona una abreviatura genérica que puede reducir ligeramente la cantidad de código

1List <Estudiante> gen = new ArrayList <> ();

1.5 transversal

Atravesar con un bucle for:

① A través del estudio anterior, sé que puede usar size () y get () para obtener el tamaño y el elemento en la posición especificada respectivamente, combinado con el bucle for, puede recorrer el contenido de ArrayList

Código:


 1List<Student> students= new ArrayList<Student>();
 2// 放5个Student进入容器
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student name " + i));
 5}
 6// 第一种遍历 for循环
 7System.out.println("--------for 循环-------");
 8for (int i = 0; i < students.size(); i++) {
 9Student s = students.get(i);
10System.out.println(s);

Recorrido del iterador:

① Utilice Iterator para recorrer los elementos de la colección

Código:


 1List<Student> students= new ArrayList<Student>();
 2//放5个students进入容器
 3for (int i = 0; i < 5; i++) {
 4students.add(new students("student name " +i));
 5}
 6//第二种遍历,使用迭代器
 7System.out.println("--------使用while的iterator-------");
 8Iterator<Student> it= students.iterator();
 9//从最开始的位置判断"下一个"位置是否有数据
10//如果有就通过next取出来,并且把指针向下移动
11//直达"下一个"位置没有数据
12while(it.hasNext()){
13Student s = it.next();
14System.out.println(s);
15}
16//迭代器的for写法
17System.out.println("--------使用for的iterator-------");
18for (Iterator<Student> iterator = students.iterator(); iterator.hasNext();) {
19Student student= (Student ) iterator.next();
20System.out.println(student);
21}

Uso mejorado para bucle:

① Es muy conveniente utilizar el bucle for mejorado para atravesar los elementos en ArrayList, que es la primera opción de muchos desarrolladores.

② Sin embargo, el bucle for mejorado también tiene sus defectos: no se puede utilizar para inicializar ArrayList, y es imposible saber qué elemento es actualmente. Cuando solo se necesitan imprimir elementos singulares, no se puede hacer. La variable de subíndice debe personalizarse nuevamente.

Código:


 1List<Student> students= new ArrayList<Student>();
 2// 放5个Student进入容器
 3for (int i = 0; i < 5; i++) {
 4students.add(new Student("student name " + i));
 5}
 6// 第三种,增强型for循环
 7System.out.println("--------增强型for循环-------");
 8for (Student s : students) {
 9System.out.println(s);
10}

Supongo que te gusta

Origin blog.51cto.com/15064450/2602791
Recomendado
Clasificación