Περισσότερα
Πώς να προσθέσετε νέα στοιχεία σε έναν πίνακα;
Έχω τον ακόλουθο κώδικα:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Αυτές οι δύο προσθήκες δεν μεταγλωττίζονται. Πώς θα μπορούσε να λειτουργήσει σωστά;
271
3
Το μέγεθος ενός πίνακα δεν μπορεί να τροποποιηθεί. Αν θέλετε έναν μεγαλύτερο πίνακα πρέπει να δημιουργήσετε έναν νέο.
Μια καλύτερη λύση θα ήταν να χρησιμοποιήσετε μια
ArrayList
η οποία μπορεί να μεγαλώνει όσο την χρειάζεστε. Η μέθοδοςArrayList.toArray( T[] a )
σας δίνει πίσω τον πίνακα σας αν τον χρειάζεστε σε αυτή τη μορφή.Αν πρέπει να το μετατρέψετε σε έναν απλό πίνακα...
Αλλά τα περισσότερα πράγματα που μπορείτε να κάνετε με έναν πίνακα μπορείτε να τα κάνετε και με αυτή την ArrayList:
Χρησιμοποιήστε μια
List
, όπως μιαArrayList
. Είναι δυναμικά αναπτυσσόμενη, σε αντίθεση με τους πίνακες (βλέπε: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).Αν επιμένετε να χρησιμοποιείτε πίνακες, μπορείτε να χρησιμοποιήσετε το
java.util.Arrays.copyOf
για να διαθέσετε έναν μεγαλύτερο πίνακα για να φιλοξενήσει το πρόσθετο στοιχείο. Αυτό όμως δεν είναι πραγματικά η καλύτερη λύση.Αυτό είναι
O(N)
ανάappend
. ΗArrayList
, από την άλλη πλευρά, έχειO(1)
αποσβεσμένο κόστος ανά πράξη.Δείτε επίσης
Όπως είπε ο tangens, το μέγεθος ενός πίνακα είναι σταθερό. Αλλά πρέπει πρώτα να τον ενσαρκώσετε, αλλιώς θα είναι μόνο μια μηδενική αναφορά.
Αυτός ο πίνακας μπορεί να περιέχει μόνο 10 στοιχεία. Έτσι, μπορείτε να προσαρτήσετε μια τιμή μόνο 10 φορές. Στον κώδικά σας έχετε πρόσβαση σε μια μηδενική αναφορά. Αυτός είναι ο λόγος για τον οποίο δεν λειτουργεί. Για να έχετε μια δυναμικά αυξανόμενη συλλογή, χρησιμοποιήστε την ArrayList.