2 Stimmen

Dynamisches Array von ints in j2me

Ich möchte ein einfaches dynamisches Array von Ints in meiner J2me-Anwendung zu tun,

Das einzige dynamische Array, das ich sehe, ist "java.util.Vector", und dieses scheint kein int als neues Element zu akzeptieren (will nur Objects).

Wie kann ich dieses Problem also lösen?

6voto

Thomas Lundström Punkte 1593

Sie müssen den int in einen Integer einpacken.

v.addElement(new Integer(1));

0 Stimmen

Ich endete mit, dass das Problem ist, der beste Weg, den ich gefunden, um den Wert zu extrahieren ist "((Integer)(v.elementAt(index))).intValue()". Ist das eine Java-Sache oder was?

0 Stimmen

Verwenden Sie Generika. Vector<Integer> v = Vector<Integer>(); Integer i = v.elementAt(index);

0 Stimmen

Sie können Generika verwenden, um Ihren Vektor zu typisieren, und dann geben Sie keine Objekte mit elementAt zurück, sondern stattdessen Inegers. Versuchen Sie es: Vector<Integer> v = new Vector<Integer>(); v.elementAt(index) Autoboxing konvertiert den Integer in einen int für dich, du brauchst intValue nicht zu benutzen.

5voto

izb Punkte 47624
public class DynamicIntArray
{
    private static final int CAPACITY_INCREMENT = 10;
    private static final int INITIAL_CAPACITY   = 10;

    private final int capacityIncrement;

    public int   length = 0;
    public int[] array;

    public DynamicIntArray(int initialCapacity, int capacityIncrement)
    {
        this.capacityIncrement = capacityIncrement;
        this.array = new int[initialCapacity];
    }

    public DynamicIntArray()
    {
        this(CAPACITY_INCREMENT, INITIAL_CAPACITY);
    }

    public int append(int i)
    {
        final int offset = length;
        if (offset == array.length)
        {
            int[] old = array;
            array = new int[offset + capacityIncrement];
            System.arraycopy(old, 0, array, 0, offset);
        }
        array[length++] = i;
        return offset;
    }

    public void removeElementAt(int offset)
    {
        if (offset >= length)
        {
            throw new ArrayIndexOutOfBoundsException("offset too big");
        }

        if (offset < length)
        {
            System.arraycopy(array, offset+1, array, offset, length-offset-1);
            length--;
        }
    }
}

Er hat keine setAt()-Methode, aber ich bin sicher, Sie verstehen die Idee.

1 Stimmen

Ich vermute, dass DEFAULT_CAPACITY_INCREMENT, DEFAULT_INITIAL_CAPACITY nicht das Präfix DEFAULT_ haben sollten?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X