it4life - Portal de Informática

triodo


1.0 user
3 posts

public class Contentor { 
	private Object[] arrayA;
    private int tamanho;
    private int nElem = 0;
    
    public Contentor(int tamanho) {
    	this.tamanho = tamanho;
        arrayA = new Object[tamanho];
    }
    
    public Contentor() {
    	this(2);
    }
    
    private void actTamanho() {
    	if (nElem >= arrayA.length) {
        	Object[] arrayB = new Object[arrayA.length * 2];
            System.arraycopy(arrayA, 0, arrayB, 0, nElem);
            arrayA = arrayB; 
        } else if (nElem <= arrayA.length / 2 && arrayA.length > tamanho) {
        	Object[] arrayB = new Object[arrayA.length / 2];
            System.arraycopy(arrayA, 0, arrayB, 0, nElem);
            arrayA = arrayB;
        }
    }
    
    public void juntarFim(Object obj) {
    	arrayA[nElem] = obj;
        nElem++;
        actTamanho();
    }
    
    public void juntarPos(int pos, Object obj) {
    	if (pos > arrayA.length || pos < 1) {
        	return;		//sair se estiver a tentar colocar numa posição que não respeita a capacidade do array
        }
        
        //Shiftar todos os elementos desde a posicao pos-1 ate ao nr elementos
        if (nElem > 0) {
        	for (int i = nElem - 1; i >= pos - 1; i--) {
            	arrayA[i + 1] = arrayA[i];
            }
        }	//Alterar o valor do indice
        arrayA[pos - 1] = obj;
        nElem++;
        actTamanho();
    }
    
    public void remover(int pos) {
    	if (pos > arrayA.length - 1 || pos < 0) {
        	return;
        }
        
        //Shiftar todos os elementos desde a posicao pos-1 ate ao nr elementos
        for (int i = pos - 1; i < nElem - 1; i++) {
        	arrayA[i] = arrayA[i + 1];
        }
        
        arrayA[nElem-1] = null;
        nElem--;
        actTamanho();
    }
    
    public int tamanho() {
    	return nElem;
    }
    
    public boolean vazio() {
    	return (nElem == 0);
    }
    
    public Object getElemento(int pos) {
    	return arrayA[pos-1];
    }
    
    public void listar() {
    	System.out.println("Tamanho: " + arrayA.length + " Elementos: " + nElem);
        
        for (int i = 0; i <= arrayA.length - 1; i++) {
        	System.out.println(arrayA[i]);
        }
        
        System.out.println("fim");
    }
}

 


Segue-nos nas redes sociais