JavaRush /Blog Java /Random-ES /Pausa para el café #167. Cosas para revisar antes de una ...

Pausa para el café #167. Cosas para revisar antes de una entrevista de Java. ¿Cuál es la diferencia entre enumeración e iterador en Java?

Publicado en el grupo Random-ES

Cosas a revisar antes de una entrevista de Java

Fuente: Medio En este artículo, encontrará 17 consejos de un desarrollador experimentado que lo ayudarán en una entrevista sobre Java. Pausa para el café #167.  Cosas para revisar antes de una entrevista de Java.  ¿Cuál es la diferencia entre enumeración e iterador en Java?  - 1He trabajado en la industria de TI durante más de 20 años y pasé la mayor parte de ese tiempo trabajando con Java. Además, adquirí una experiencia considerable entrevistando a desarrolladores de Java. Aunque el lenguaje Java evoluciona constantemente, los conceptos básicos siguen siendo en gran medida los mismos. A continuación se ofrecen algunos consejos que quiero compartir con los aspirantes a desarrolladores antes de acudir a una entrevista. Si los repites te salvará de errores graves.
  1. La clase Object está en la raíz de la jerarquía de clases de Java. Todas las clases de Java se remontan a Object . Incluso si una clase no extiende explícitamente ninguna clase, extiende Object . Sin embargo, una clase es libre de extender Object explícitamente.

  2. En Java, solo puede extender una clase (no se permite la herencia múltiple debido a la ambigüedad). Sin embargo, una clase puede implementar cualquier cantidad de interfaces al mismo tiempo.

  3. Una interfaz extiende otra interfaz (a diferencia de una implementación).

  4. Hay cuatro modificadores de acceso en Java: público (disponible para todos), protegido (disponible solo para subclases), privado (disponible solo dentro de una sola clase), predeterminado (disponible dentro de un solo paquete). Cabe señalar que las subclases de la misma clase pueden estar en paquetes diferentes. La clase principal y las subclases no tienen por qué ser parte del mismo paquete.

  5. La cadena de clase es inmutable. La inmutabilidad significa que la clase String en sí no proporciona ningún método para reemplazar el valor en una referencia String . Si desea reemplazar el valor de una referencia de cadena, debe asignar el valor explícitamente usando el operador = . Compare esto con las clases StringBuffer o StringBuilder , que tienen métodos como append para que no tenga que usar el operador = allí .

  6. ConcurrentHashMap es más eficiente que Hashtable . ConcurrentHashMap opera en segmentos de la estructura de datos subyacente, en los que una operación de escritura bloquea solo un segmento específico (independientemente de a qué segmento pertenece la clave). Sin embargo, en Hashtable se bloqueará toda la estructura de datos.

  7. ConcurrentHashMap es más lento que HashMap porque HashMap no implementa seguridad de subprocesos. HashMap puede generar una excepción ConcurrentModificationException si un subproceso itera sobre un HashMap y otro subproceso intenta modificar el mismo HashMap . ConcurrentHashMap no generará una excepción aquí.

  8. ¿Cómo implementar la igualdad de dos objetos de la misma clase que has definido? Respuesta: Esto se puede hacer anulando el método hashcode() .

  9. ¿Cuál es el resultado predeterminado del método toString() ? Respuesta: Es la concatenación del nombre de la clase, el signo @ y el valor hashcode() .

  10. ¿Cómo implementar polimorfismo en Java? Una forma de hacerlo es sobrecargar el método. Otra forma es anular el método.

  11. ¿Cómo se llama a un constructor de superclase desde una clase secundaria? Respuesta: Esto se puede hacer usando la palabra clave super() . Siempre se llama al método super() sin argumentos, incluso si no se especifica explícitamente. El método super() con un argumento debe especificarse explícitamente. Una llamada a super() (con o sin argumento) siempre debe ser la primera línea en el constructor de la clase secundaria si es necesario llamarla.

  12. ¿Qué son las excepciones marcadas y no marcadas? Respuesta: Las excepciones marcadas son aquellas que deben declararse o capturarse en el método donde se espera que se lancen. Una excepción no marcada no tiene esta limitación. java.io.IOException es un ejemplo de excepción marcada. Las excepciones no comprobadas provienen de la clase RunTimeException .

  13. La clase raíz de la jerarquía de excepciones es Throwable (que a su vez extiende implícitamente Object ). La excepción y el error provienen de Throwable .

  14. Desde Java 8, los métodos pueden tener una implementación en una interfaz. Los métodos predeterminados y los métodos estáticos pueden tener implementaciones.

  15. No se puede crear una instancia de una clase que se considere abstracta . Cualquier clase que no proporcione un cuerpo para ninguno de los métodos debe declararse abstracta. Un desarrollador puede declarar una clase abstracta incluso si todos los métodos tienen un cuerpo; sin embargo, esto no es muy recomendable porque en este caso no se puede crear una instancia de la clase.

  16. La clase final no se puede ampliar. A una variable final no se le puede asignar otro valor. No se puede anular un método final .

  17. ¿ Qué palabras clave se requieren en una construcción try-catch-finally ? Esto podría ser try-catch , try-finally o los tres. En este caso, catch no es una palabra clave obligatoria.

¿Cuál es la diferencia entre enumeración e iterador en Java?

Fuente: Rrtutors Esta publicación analiza las diferencias entre enumeración e iteración en Java. El paquete Java.util proporciona dos interfaces para recorrer los elementos de un objeto Colección : Enumeración e Iterador . Aunque ambos pasan por un objeto Colección , existen algunas diferencias entre ellos.

Diferencias entre enumeración e iterador

  • Tiempo agregado al JDK: Se introducen en diferentes momentos. Enum se introdujo en JDK 1.0, mientras que el iterador se introdujo en JDK 1.2.

  • Eliminación de elementos: Esta es la principal diferencia entre ambos. En la interfaz Iterator , podemos eliminar un elemento al iterar sobre un objeto Collection , mientras que no podemos cambiarlo al iterar sobre un objeto Collection usando Enumeration . Esto se debe a que la interfaz Iterator tiene un método remove() , pero la interfaz Enumeration no.

  • Tipo de operación: el iterador tiene un tipo de operación a prueba de fallas y la enumeración tiene un tipo de operación a prueba de fallas. Como resultado, Iterator genera una excepción ConcurrentModificationException cuando la colección se modifica durante la iteración, a menos que se utilice su propio método remove() , mientras que Enumeration no genera ninguna excepción cuando la colección se modifica durante la iteración.

Ejemplos de enumeración e iterador en Java

Ejemplo de enumeración

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.List;

import java.util.Vector;

public class Enumeration_Example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "Apple", "HP"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "Samsung");

        }

        private static void delete(Vector vectali, String laptop) {

            Enumeration lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              String s = (String) lapi.nextElement();

              if (s.equals(laptop)) {

                  vectali.remove(laptop);

              }

            }

            System.out.println("The Laptop brands includes:");

            lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              System.out.println(lapi.nextElement());

            }

      }

}
Conclusión:
Las marcas de portátiles incluyen: Lenovo Apple HP

Ejemplo de iterador:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

import java.util.Vector;

public class Iterator_example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "HP", "Apple"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "HP");

        }

        private static void delete(Vector vectali, String name) {

            Iterator a = vectali.iterator();

            while (a.hasNext()) {

              String s = (String) a.next();

              if (s.equals(name)) {

                  a.remove();

              }

            }

            // Display the names

            System.out.println("The laptop brand includes:");

            a = vectali.iterator();

            while (a.hasNext()) {

              System.out.println(a.next());

            }

      }

}
Conclusión:
La marca de portátiles incluye: Samsung Lenovo Apple
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION