¿Que diferencia hay entre declarar nodes como new ArraysList 1)List<Node> nodes = new ArrayList<>(); y nodes como new Lis<...

Hunk Hk

Hunk Hk

Pregunta
studenthace 6 años

¿Que diferencia hay entre declarar nodes como new ArraysList

1)List<Node> nodes = new ArrayList<>();

y nodes como new Lis<>():

2) List<Node> nodes = new List<>();

Se supone que ArrayList es una clase que implementa a la Interfaz List. Pero List<>()?

5 respuestas
para escribir tu comentario
    Daniel Camacho

    Daniel Camacho

    studenthace 3 años

    Arraylist es una Clase de la interfaz List por lo que no puedes instanciar List como metodo constructor, y mas adelante en el curso te daras cuenta que no puedes instanciar un objeto de una clase o interfaz abstracta

    List es una<interfaz> que viene de la super interfaz collection. del packagejava.util del modulo java.base.

    List <Node> nodes = new ArrayList<>(); | | | | | InterfazAbstracta Clase Nombre de la colecion Instancia ClaseDeLa InterfazList

    JAVA.UTIL ARRAYLIST.png

    METODO ARRAYLIST.png

    Daniel Camacho

    Daniel Camacho

    studenthace 3 años

    veo que otros se complican en responder,

    List
    no es un metodo es una
    <interfaz>
    que viene de la super interfaz
    collection
    . del package
    java.util
    del modulo
    java.base.

    • Arraylist
      es un metodo del la interfaz
      List
      por lo que no puedes instanciar
      List
      como metodo

    List <Node> nodes = new ArrayList<>(); | | | | /*Clase Predefinida / Nombre del array Instancia/ Metodo Constructor de la clase predefinida*/

    JAVA.UTIL ARRAYLIST.png METODO ARRAYLIST.png

    Ebenezer Silvestre Diaz Garcia

    Ebenezer Silvestre Diaz Garcia

    studenthace 6 años

    Tu mismo dijiste la respuesta, List es la interface, y ArrayList es la implementacion de dicha interface, tu creas un objeto del tipo interface, pero cuando lo instancias, lo haces con la clase que implementa los métodos.

    Oscar Estuardo de la Mora

    Oscar Estuardo de la Mora

    studenthace 6 años

    Las clases abstractas son, muy frecuentemente, ¨plantilas¨ para crear otras clases. Estas plantilas carecen de funcionalidad y en Java, por definicion, las clases abstractas no pueden ser instanciadas, tal y como estas intentando. Lo que tienes que hacer es usar clases que implementan estas clases abstractas, tal como la clase ArrayList o Array. Estas dos clases que mencione implementan List, los mismos metodos, pero de formas distintas, por ejemplo, los ArrayList no son sincronizables, pero los Array si (osea que al Array puedes modificarlo con concurrencia, ArrayList daria error).

    Para que nos sirve? basicamente imagina que en las noches que hay menos gente, la lista recibe solo datos secuenciales, osea, uno por uno, pero en el dia recibe de muchos lugares, osea con concurrencia, y solo tenemos un objeto List listado, entonces en la noche, se utiliza un List que se le asigno un ArrayList y en el dia se le asigna un Array (donde ArrayList, en este ejemplo, toma poca energia pero da igual por que tendra menos trabajo y Array usa mucha energia pero es por que tendra mucho trabajo). Y como la interfaz tiene el metodo add(), tanto en el dia y en la noche se usara siempre ¨el mismo¨ metodo, pero con distinta implementacion dependiendo del gasto energetico, algo asi que el add de ArrayList consume menos y el de Array consume mas.

    Espero haberte ayudado y si no... lo siento :3

    Jose Antonio Marín López

    Jose Antonio Marín López

    studenthace 6 años

    ArrayList implementa List que es una clase abstracta. Por decirlo de forma sencilla solamente "prepara la idea de lo que es una lista" y define la base de la misma. El segundo caso daría error porque no puedes crear una instancia de una clase abstracta. Tendrías que usar siempre ArrayList u otra clase que derive de List.

Curso Básico de Java SE 2018

Curso Básico de Java SE 2018

Java es un lenguaje de programación con el que puedes desarrollar software multiplataforma gracias a la JVM (Máquina Virtual de Java). Aprende las características fundamentales del lenguaje y desarrolla tus propios proyectos. Serás capaz de aplicar desde conceptos básicos, pasando por sus características orientadas a objetos y otros conceptos avanzados como herencia y polimorfismo.

Curso Básico de Java SE 2018
Curso Básico de Java SE 2018

Curso Básico de Java SE 2018

Java es un lenguaje de programación con el que puedes desarrollar software multiplataforma gracias a la JVM (Máquina Virtual de Java). Aprende las características fundamentales del lenguaje y desarrolla tus propios proyectos. Serás capaz de aplicar desde conceptos básicos, pasando por sus características orientadas a objetos y otros conceptos avanzados como herencia y polimorfismo.