As classes java.util.ArrayList<E>
e java.util.LinkedList<E>
permitem o manuseio de uma lista de objetos de forma mais fácil do que a implementada por um array de objetos. No entanto, estas classes não possuem um construtor que receba como parâmetro um array de objetos e inicialize a lista de objetos com tais valores, dificultando a migração dos sistemas legados que ainda utilizam arrays de objetos. Desenvolva um adaptador para essas classes, que permita a inicialização da lista de objetos por meio de um array de objetos, como o implementado pela classe java.util.CopyOnWriteArrayList<E>
.
/*************************************************************************
* Copyright (C) 2009/2025 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* OpenJDK Version "1.8.0_121" *
* OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) *
*************************************************************************/
package com.ybadoo.tutoriais.poo.tutorial09.exercicio29;
import java.util.ArrayList;
import java.util.Collection;
/**
* Adaptador da classe ArrayList para inicializar a lista com os elementos
* de um vetor
*
* @param <E> tipo dos elementos a serem armazenados no ArrayList
*/
public class ArrayListAdapter<E> extends ArrayList<E>
{
/**
* Identificador de serialização da classe
*/
private static final long serialVersionUID = 1L;
/**
* Inicializar uma lista vazia com uma capacidade inicial de dez elementos
*/
public ArrayListAdapter()
{
super();
}
/**
* Inicializar uma lista contendo os elementos da coleção especificada,
* na ordem em que são retornados pelo iterador da coleção
*
* @param collection a coleção cujos elementos devem ser colocados nesta
* lista
* @throws NullPointerException se a coleção especificada for nula
*/
public ArrayListAdapter(Collection<? extends E> collection)
{
super(collection);
}
/**
* Inicializar uma lista contendo os elementos do vetor especificado,
* na ordem em que são retornados pelo índice do vetor
*
* @param array o vetor cujos elementos devem ser colocados nesta lista
* @throws NullPointerException se o vetor especificado for nulo
*/
public ArrayListAdapter(E[] array)
{
super(array.length);
for(E element: array)
{
add(element);
}
}
/**
* Inicializar uma lista vazia com a capacidade inicial especificada
*
* @param initialCapacity a capacidade inicial da lista
* @throws IllegalArgumentException se a capacidade inicial especificada
* for negativa
*/
public ArrayListAdapter(int initialCapacity)
{
super(initialCapacity);
}
}
/*************************************************************************
* Copyright (C) 2009/2025 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* OpenJDK Version "1.8.0_121" *
* OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) *
*************************************************************************/
package com.ybadoo.tutoriais.poo.tutorial09.exercicio29;
import java.util.Collection;
import java.util.LinkedList;
/**
* Adaptador da classe LinkedList para inicializar a lista com os elementos
* de um vetor
*
* @param <E> tipo dos elementos a serem armazenados no LinkedList
*/
public class LinkedListAdapter<E> extends LinkedList<E>
{
/**
* Identificador de serialização da classe
*/
private static final long serialVersionUID = 1L;
/**
* Inicializar uma lista vazia
*/
public LinkedListAdapter()
{
super();
}
/**
* Inicializar uma lista contendo os elementos da coleção especificada,
* na ordem em que são retornados pelo iterador da coleção
*
* @param collection a coleção cujos elementos devem ser colocados nesta
* lista
* @throws NullPointerException se a coleção especificada for nula
*/
public LinkedListAdapter(Collection<? extends E> collection)
{
super(collection);
}
/**
* Inicializar uma lista contendo os elementos do vetor especificado,
* na ordem em que são retornados pelo índice do vetor
*
* @param array o vetor cujos elementos devem ser colocados nesta lista
* @throws NullPointerException se o vetor especificado for nulo
*/
public LinkedListAdapter(E[] array)
{
super();
for(E element: array)
{
add(element);
}
}
}
/*************************************************************************
* Copyright (C) 2009/2025 - Cristiano Lehrer (cristiano@ybadoo.com.br) *
* Ybadoo - Solucoes em Software Livre (ybadoo.com.br) *
* *
* Permission is granted to copy, distribute and/or modify this document *
* under the terms of the GNU Free Documentation License, Version 1.3 or *
* any later version published by the Free Software Foundation; with no *
* Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A *
* A copy of the license is included in the section entitled "GNU Free *
* Documentation License". *
* *
* Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic) *
* OpenJDK Version "1.8.0_121" *
* OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) *
*************************************************************************/
package com.ybadoo.tutoriais.poo.tutorial09.exercicio29;
import java.util.List;
/**
* Classe responsável pela execução do padrão de projeto Adapter
*/
public class Application
{
/**
* Construtor para inicializar a execução do padrão de projeto Adapter
*/
private Application()
{
}
/**
* Método principal da linguagem de programação Java
*
* @param args argumentos da linha de comando (não utilizado)
*/
public static void main(String[] args)
{
Integer[] elements = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
List<Integer> arrayList = new ArrayListAdapter<>(elements);
System.out.println(arrayList); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
List<Integer> linkedList = new LinkedListAdapter<>(elements);
System.out.println(linkedList); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
}