2010-12-27 15 views
54

Próbuję dodawać, usuwać i odwoływać elementy z tablicy, którą utworzę w moim głównym pliku java, ale mam problem z ustaleniem poprawnej składni. W actionscript mają push() i pop() do dodawania i usuwania elementów w tablicy, czy istnieje odpowiednik w systemie Android?odpowiednik funkcji push() lub pop() dla tablic?

+1

Jakie tablicy masz? Czy możesz pokazać nam jakiś kod? – EboMike

+0

int [] intArray = new int {2, 3, 5, 8, 13}; Jak mogę odwołać intArray [3], lub wszystkie elementy po jednym na raz? – clayton33

Odpowiedz

5

Możesz użyć LinkedList. Posiada metody peek, poll i offer.

24

W Javie tablica ma stały rozmiar (po inicjalizacji), co oznacza, że ​​nie można dodać lub usunąć elementy z tablicy.

int[] i = new int[10]; 

Powyższy fragment oznacza, że ​​tablica liczb ma długość 10. Nie można dodać jedenasty całkowitą, bez ponownego przypisania odniesienie do nowej tablicy, jak następuje:

int[] i = new int[11]; 

W języku Java pakiet java.util zawiera wszystkie rodzaje struktur danych, które mogą obsługiwać dodawanie i usuwanie elementów z kolekcji podobnych do tablic. Klasyczna struktura danych Stack ma metody push i pop.

+6

Dobre wyjaśnienie, należy jednak pamiętać, że Stack nie jest tak wielką klasą, jak dziedziczy po Vector, i jako taki jest w pełni zsynchronizowany.Więc chyba że potrzebujesz synchronizacji, ArrayList lub LinkedList jest prawdopodobnie lepszym rozwiązaniem. –

14

Dla tych, którzy nie mają czasu na wprowadzenie kodu zastępującego tablice przy pomocy Collection s (na przykład ArrayList), istnieje alternatywa. W przeciwieństwie Collection s, długość tablicy nie może być zmieniony, ale tablica może być zastąpiony w następujący sposób:

array = push(array, item); 

Wadą jest to, że

  • cała tablica musi być kopiowane przy każdym push i
  • oryginalna tablica Object nie została zmieniona, więc musisz odpowiednio zaktualizować zmienne.

Oto metoda push dla String:
(można utworzyć wiele push metody, jeden dla String, jeden dla int, itp)

private static String[] push(String[] array, String push) { 
    String[] longer = new String[array.length + 1]; 
    for (int i = 0; i < array.length; i++) 
     longer[i] = array[i]; 
    longer[array.length] = push; 
    return longer; 
} 

Ta alternatywa jest bardziej efektywne, krótsze & trudniej do odczytu:

private static String[] push(String[] array, String push) { 
    String[] longer = new String[array.length + 1]; 
    System.arraycopy(array, 0, longer, 0, array.length); 
    longer[array.length] = push; 
    return longer; 
} 
+4

Zdecydowanie odradzam stosowanie tej metody. Dla naprawdę prostych i małych tablic nie będzie narzucać problemów, ale dla średniej lub ciężkiej tablicy spowoduje to, że system będzie iterować po tablicy za każdym razem, gdy zostanie dodany element. Jeśli masz więcej niż 100 elementów i chcesz dodać więcej elementów, wykonasz 303 operacje. – Panthro

1

Bibliotekazawiera metody push (wartości), pop(), shift() i unshift (wartości).

przykład

Kod:

import com.github.underscore.$: 
import java.util.*; 

public class Main { 
    public static void main(String[] args) { 
     List<String> strings = Arrays.asList("one", "two", " three"); 
     List<String> newStrings = $.push(strings, "four", "five"); 
     // ["one", " two", "three", " four", "five"] 
     String newPopString = $.pop(strings).fst(); 
     // " three" 
     String newShiftString = $.shift(strings).fst(); 
     // "one" 
     List<String> newUnshiftStrings = $.unshift(strings, "four", "five"); 
     // ["four", " five", "one", " two", "three"] 
    } 
} 
Powiązane problemy