Anda di halaman 1dari 4

Nombre: Nancy Alejandra sanchez serrato

#1:
import java.util.Arrays;

public class ArrayList<T> implements List<T> {

private final int INIT_CAPACITY = 100;


private T[] arr;
private int size;

public ArrayList() {
arr = (T[]) new Object[INIT_CAPACITY];
size = 0;
}

private void ensureCapacity() {


if (arr.length > size)
return;
T[] arr2 = (T[]) new Object[2 * arr.length];
for (int i = 0; i < arr.length; i++)
arr2[i] = arr[i];
arr = arr2;
}

public void add(int pos, T x) {


if (pos < 0 || pos > size)
throw new IndexOutOfBoundsException();
ensureCapacity();
for (int i = size; i > pos; i--)
arr[i] = arr[i - 1];
arr[pos] = x;
size++;
}

public void add1( T x) {


if (size==0) {
add(0,x);
}else {
ensureCapacity();
for (int i = 0; i>arr.length; i++)
if(x.equals(arr[i])) {
add(i,x);
}}
size++;
}

public void addFirst(T x) {

add(0, x);
}

public void addLast(T x) {


add(size + 1, x);
}

public void addAll(List<T> lista) {


for (int i = 0; i < lista.size(); i++) {
addLast((T) lista.get(i));
}

public boolean remove1(T x) {


int i = find(x);
if (i == -1)
return false;
else
remove(i);
return true;

public void removeAll(T x) {


int a = find(x);
for (int i = a; i < arr.length; i++) {
a = find(x);
if (a == -1) {
} else {
remove(a);
}
}

public T remove(int pos) {


if (pos < 0 || pos >= size)
throw new IndexOutOfBoundsException();
T x = arr[pos];
for (int i = pos + 1; i < size; i++)
arr[i - 1] = arr[i];
size--;
ARRCapacity();
return x;
}

private void ARRCapacity() {


if (size > arr.length / 4)
return;
T[] arr2 = (T[]) new Object[arr.length / 2];
for (int i = 0; i < size; i++)
arr2[i] = arr[i];
arr = arr2;
}

public T get(int pos) {


if (pos < 0 || pos >= size)
throw new IndexOutOfBoundsException();
return arr[pos];
}

public void set(int pos, T x) {


if (pos < 0 || pos >= size)
throw new IndexOutOfBoundsException();
arr[pos] = x;
}

public int size() {


return size;
}

public int find(T x) {


for (int i = 0; i < size; i++)
if (x.equals(arr[i]))
return i;
return -1;
}

public int findLast(T x) {


for (int i = arr.length; i > 0; i--) {
if (x.equals(arr[i]))
return i;
}
return -1;

public ArrayList findAll(T x) {


ArrayList pos = new ArrayList();
for (int i = 0; i < arr.length; i++) {
int a = find(x);
if (a == -1)
return null;
pos.add(i, a);
}
return pos;

public void sort() {


Arrays.sort(arr);
}

public String toString() {


StringBuilder str = new StringBuilder();
str.append("[");
for (int i = 0; i < size; i++)
str.append(arr[i] + ",");
str.append("]");
return str.toString();
}

public boolean equals(Object obj) {


if (!(obj instanceof List))
return false;
List<T> list2 = (List<T>) obj;
if (size != list2.size())
return false;
for (int i = 0; i < size; i++)
if (!arr[i].equals(list2.get(i)))
return false;
return true;
}
}

#2: para que se mantengan ordenado el arreglo se deben modificar el agregar


para que solo reciba de x. Se agregará el en la posición 0, si el arreglo tiene datos
se busca y se llama en la posición donde debe ir
Afectaría la complejidad ya que tendríamos que cada vez que se inserte buscar la
posición debe recorrer el arreglo para buscar y mas la complejidad de insertar en
la posición x
#3:

Anda mungkin juga menyukai