Citat:
Det känns som du krånglar till det lite extra, men det fungerar uppenbarligen. Har jag rätt när jag gissar att du kommer från C/C++? Jag skrev en liten klass som du kan testa. Men det här är en liten dynamiskt array klass och inte en "kö", det är skillnad. En kö har en head och en tail och man kan t.ex lägga till värden med en funktion som kallas "push()" och ta bort värden med "pop()". Kolla LIFO och FIFO-stackar på wiki.
output:
Capacity: 5
Tomato
Capacity: 10
Jag har inte testat om klassen funkar bra, då den skrevs snabbt. Och som du ser har jag inte implementerat en funktion för att ta bort värden.
Kod:
public class DynamicArrayTest {
public static void main(String[] args) {
DynamicArray arr = new DynamicArray(5);
System.out.println("Capacity: " + arr.capacity());
arr.add("Bicycle"); // 0
arr.add("Car"); // 1
arr.add("Bear"); // 2
arr.add("Tomato"); // 3
arr.add("Book"); // 4
arr.add("Airplane"); // 5
System.out.println(arr.get_element_at(3));
System.out.println("Capacity: " + arr.capacity());
}
}
Kod:
public class DynamicArray
{
private int _size;
private int _pointer;
private final int RESIZEV = 5;
private String _arr[];
public DynamicArray(int size)
{
_size = (size < 1) ? 1 : size;
_arr = new String[_size];
_pointer = 0;
}
public void add(String add)
{
if(_pointer == _size)
resize();
_arr[_pointer] = add;
_pointer++;
}
public String get_element_at(int idx){
return _arr[idx];
}
public int capacity(){
return _size;
}
private void resize(){
_size += RESIZEV;
String new_arr[] = new String[_size];
System.arraycopy(_arr, 0, new_arr, 0, _size-RESIZEV);
_arr = new_arr;
}
}
output:
Capacity: 5
Tomato
Capacity: 10

Det kan vara värt att tillägga för alla nybörjare där ute att i Java så skriver man metodnamn och funktioner på formen getElementAt respektive newArr. Sen är _ på privata variabler en smaksak, men jag tycker det gör koden fulare, och således mer svårläst, helt i onödan. Vill man visa att det är den klassens variabel du använder, så görs det med fördel med this.
Java är ett jäkla härke, jävla skit alltså