Aumentar tamanho de uma SequentialList

7 respostas
X

Tem como aumentar o tamanho de uma sequentiallist sem perder os dados contidos nela

SequentialList l = new SequentialList(10);
.
.
.
.

SequentialList l = new SequentialList(20);

7 Respostas

renamed
xupisco:
Tem como aumentar o tamanho de uma sequentiallist sem perder os dados contidos nela
SequentialList l = new SequentialList(10);
.
.
.
.

SequentialList l = new SequentialList(20);

Cara, nem sabia q isso existia, mas vc pode usar a classe ArrayList

public static void main(String[] a){
		ArrayList<String> lista = new ArrayList<String>();
		lista.add("Alberto");
		lista.add("Aline");
		System.out.println(lista.size()); //2
		lista.add("Fulano");
		lista.add("Beutrano");
		System.out.println(lista.size()); // 4
		lista.remove("Alberto");
		System.out.println(lista.size()); // 3
		lista.clear();
		System.out.println(lista.size()); // 0
}

espero ter ajudado!

B

Essa classe não é uma classe padrão do Java. Ela é uma collection, é um array, classe normal? O quê?

X

Não é padrao

Seque o codigo da mesma.

public class SequentialList {
    
    protected Object list[];
    protected int last=-1;
    
    /* Construtor  */
    public SequentialList (int size){
        list = new Object[size];
    }    
 
    /* Retorna o elemento na posição especificada.  */
    public Object get (int index){
        if (index<0 || index>last) return null;
        else return list[index];
    }
      /* Retorna true se o elemento foi inserido no final da lista, false caso 
    contrário. */
    public boolean add (Object o) {
        if (isFull()) return false;
        last++;
        list[last]=o;
        return true;
    }

    /* Retorna true se o elemento foi inserido na lista, false caso    
    contrário. Insere o elemento na posição especificada */
        public boolean add (Object o, int pos) {
        	if (isFull()) return false;
            for (int i=last+1; i>pos; i--) {
                list[i]=list[i-1];
            }
            last++;
            list[pos]=o;
            return true;
        }
        
        /* Remove o elemento na posição especificada */ 
        public Object remove (int index) {
        	if (isEmpty()) return null;
        	else if (index<0 || index>last) {
                System.out.println ("Indice nao existente!");
                return null;
            }
            Object o = list[index];
            int numberofElements = last - index ;
            if (numberofElements > 0) {
                System.arraycopy(list, index + 1, list, index, numberofElements);
            }
            list[last] = null; /* to let gc do its work */
            last--;
            return o;
        }
        
        /* Verifica se a lista está vazia: não tem elementos */
        public boolean isEmpty (){
            if (last==-1) return true;
            else return false;
         }
         
        /* Verifica se a lista está cheia: todas as posições do vetor interno
           estão ocupadas */
        public boolean isFull (){
            if (last==list.length-1) return true;
            else return false;
         }
      /* Retorna o número de elementos da lista */
        public int getSize() {
            return last+1;
         }
        
      //Mostra todos os elementos da lista
        public void print(){
        	for (int i=0; i<=last; i++){
        		System.out.println(list[i]);
        	}
        }
        
}
B

Para aumentar o tamanho você terá que criar um array de Object maior que o atual e copiar todo o conteúdo do array atual para o novo.

Outra forma é implementar uma espécie de lista encadeada, quando ele chegar ao fim de um array(ou nó da lista), ele automaticamente irá para o começo de outro, e continuará de lá.

A primera forma é mais fácil.

Tchello

Não seria mais fácil usar um LinkedList ao invés de um vetor?

X

Como eu posso fazer uma comparacao de um elemento de um objeto sabendo que minha lista contem numeros?

SequentialList  l = new SequentialList(10);  

if(l.get(0) < 5)
Polimorphism

use isso:

if( ((Number)l.get(0)).doubleValue() < 5 )
Criado 22 de setembro de 2009
Ultima resposta 27 de set. de 2009
Respostas 7
Participantes 5