[Vector] lista Int-ów

0

Potrzebuję stworzyć tablicę, a właściwie listę elementów typu int, tak aby można było łatwo usuwać elementy ze środka.

Postanowiłem utworzyć rozszerzyć klasę Vector

Utworzyłem klasę

public class IntList extends Vector{

    private Vector vector;
    public IntList(){
        vector = new Vector();
    }

    public void addInt(int val){
        vector.addElement(val);
    }

    public int intAt(int index){
        Integer val = (Integer) vector.elementAt(index);
        return (int) val.intValue();
    }

    public int lastInt(){
        Integer val = (Integer) vector.lastElement();
        return (int) val.intValue();
    }

    //(...) jeszcze kilka innych metod
}

Nie wiem jak to zrobić, żebym mógł napisać potem w klasie głównej po utworzeniu obiektu
IntList pierwsze = new IntList();
mógł wywołać metodę pisząc sobie po prostu
pierwsze.addElement(index);</code>
i żebym nie musiał każdej metody tworzyć tak jak te 3 które są w klasie IntList.

Byłbym wdzięczny za pomoc.

0

Ee? Przecież możesz wywołać metodę pisząc po prostu

pierwsze.addElement(index);

Coś stoi na przeszkodzie?

0

To, że wtedy mój program nie działa jak należy. w ogóle takie wywołanie nic nie powoduje. Robię to w NetBeansie i przy podpowiedziach po wpisaniu pierwsze. moje "poprawione metody" są pogrubione, a te standardowe są napisane zwykłym drukiem.

edit1:
a może to przez private Vector vector;?

edit2:
Bo mógłbym utworzyć egzemplarz klasy Vector (Vector pierwsze = new Vector();), ale wtedy mam problem z odczytaniem elementu tego wektora w taki sposób, żeby był on typu int.

0

Ja nie wiem po co zawierasz Vector jako składową klasy jednocześnie dziedzicząc po Vector. Albo to albo to.

0

Problem polega na tym, że chciałbym dziedziczyć Vector (dlatego na początku to napisałem), ale nie działały mi metody z klasy Vector którą dziedziczyłem i dlatego zacząłem dopisywać swoje.

W przypadku dziedziczenia zwrotnie (np. przy getElement(index);) otrzymuję obiekt typu Object i nie da się go przekonwertować na int.

0

To zrób to na ArrayList:

ArrayList<Integer> lista = new ArrayList<Integer>();
lista.add(2);
lista.add(5);
int w1 = lista.get(0);
int w2 = lista.get(1);
System.out.println("w1: " + w1 + " w2: " + w2);

Nie bedziesz mial metody lastElement(), ale mozna zrobic: lista.size() - 1.

0

W LinkedList są metody getFirst(), getLast(), addFirst(), addLast().

0

Zrobiłem na ArrayList i wszystko chodzi dokładnie tak jak chciałem :) dziękuję

0

Możesz korzystać z klasy Vector, ale w taki sposób:

Vector<Integer> pierwsze = Vector<Integer>();

a jeżeli chcesz napisać klasę dziedzicząca z klasy Vector i żeby zachowywała sie tak jak mówisz nie nadpsując ręcznie tych metod to w taki sposób:

public class IntVector extends Vector<Integer>

1 użytkowników online, w tym zalogowanych: 0, gości: 1