Hello! Ing artikel iki, kita bakal weruh carane ngowahi dhaptar unsur dadi array unsur ing Jawa. Bener, ora ana akeh cara kanggo nindakake iki, lan kabeh iku prasaja, mula artikel kasebut ora bakal rumit. Ayo langsung mutusake apa sing bakal ditindakake. Kita bakal ngowahi dhaptar menyang array, lan luwih khusus, dhaptar strings: Aku, tresna, sinau, ing, JavaRush bakal diowahi dadi array saka strings padha. Nanging pisanan, bonus sethitik. Ayo dadi pirembagan bab carane cepet nulis dhaptar.
Carane cepet nulis dhaptar menyang array
Elinga: ana rong skenario ing urip iki. Sing pertama yaiku melankolis lan bosen nalika kita miwiti dhaptar anyar:List<String> wordsList = new ArrayList();
Banjur kita nambahake nilai kasebut ... Siji-siji ...
wordsList.add("I");
wordsList.add("love");
wordsList.add("learning");
wordsList.add("on");
wordsList.add("JavaRush");
Ora apik. Aku kelalen kenapa dhaptar kasebut dibutuhake nalika aku nggawe! Cara kapindho yaiku ngilangi kabeh sing ora perlu lan nganggo ... kelas sarana. Contone, kelas Arrays
, sing nduweni cara sing trep banget asList
. Sampeyan bisa mlebu apa wae sing pengin nggawe dhaptar, lan cara kasebut bakal nggawe dhaptar. Kaya iki:
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
Cara iki njupuk dhewe varargs
- ing pangertèn, array. Aku apologize kanggo kasunyatan sing ing kuliah disebut dhaftar kanggo array aku mulang sampeyan array kanggo dhaftar pisanan, nanging kahanan dibutuhake. Nah, saiki cara kanggo ngowahi dhaptar dadi array.
Cara No. 1. dhadha
Cara iki cocog kanggo sing seneng ngetik kode ing keyboard tanpa mikir. A jinis meditasi. Langkah 1. Gawe larik kanthi dawa sing padha karo dhaptar:List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] wordsArray = new String[wordsList.size()];
Langkah 2. Nggawe daur ulang karo counter kanggo iterate liwat kabeh unsur dhaftar lan bisa ngakses sel array dening indeks:
for (int i = 0; i < wordsList.size(); i++) {
}
Langkah 3. Ing daur ulang, kita nemtokake nilai saben unsur dhaptar kanthi indeks i menyang sel array kanthi indeks i:
for (int i = 0; i < wordsList.size(); i++) {
wordsArray[i] = wordsList.get(i);
}
asil:
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] wordsArray = new String[wordsList.size()];
for (int i = 0; i < wordsList.size(); i++) {
wordsArray[i] = wordsList.get(i);
}
}
Cara No. 2. toArray Method
Mbokmenawa sing paling optimal kanggo nggunakake. AntarmukaList
nduweni rong cara toArray
sing nggawe array saka dhaptar saiki:
Object[] toArray();
T[] toArray(T[] a);
Cara pisanan ngasilake macem-macem obyek sing ngemot kabeh unsur dhaptar saiki (saka pisanan nganti pungkasan):
public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] wordsArray = (String[]) wordsList.toArray();
for (String word : wordsArray) {
System.out.println(word);
}
}
}
Ayo mbukak metode kasebut main
lan deleng ing ngisor iki:
I
love
learning
on
JavaRush
Nanging, cara iki nduweni kekhasan: mesthi ngasilake macem-macem obyek (Object[])
. Mulane, asil bali kudu dibuwang menyang jinis data sing dikarepake. Ing conto ing ndhuwur kita ngirim menyang array saka strings (String[])
. Nanging cara iki ora nampa bantahan, sing bisa trep ing sawetara kahanan. Cara liya uga ngasilake array sing ngemot kabeh unsur dhaptar saiki (saka pisanan nganti pungkasan). Nanging, ora kaya sing pisanan, cara liya njupuk array saka jinis tartamtu minangka argumen. Nanging asil saka cara liya ora bakal Uploaded obyek, nanging Uploaded saka jinis data tartamtu - padha karo jinis data ing cara Uploaded liwati minangka bantahan.
public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] wordsArray = wordsList.toArray(new String[0]);
for (String word : wordsArray) {
System.out.println(word);
}
}
}
Yen kita mbukak metode main
, kita bakal weruh tembung sing padha ing output:
I
love
learning
on
JavaRush
Ayo dadi pirembagan sethithik babagan array sing diterusake minangka argumen menyang toArray
. Logika metode kasebut gumantung saka dawa array sing dikirim. Ana telung skenario sing bisa ditindakake:
1. Dawa saka Uploaded ditularaké kurang saka dawa dhaftar
Ing kasus iki, cara nggawe array anyar lan nyelehake unsur dhaptar kasebut. Kita nuduhake iki ing conto ing ndhuwur.2. Dawane unsur sing dilewati padha karo dawa dhaptar
Cara kasebut bakal nyelehake unsur dhaptar menyang array sing dilewati. Ayo demonstrasikan iki:public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
// Создаем пустой массив нужной длины
String[] array = new String[wordsList.size()];
// Отправляем пустой массив в метод toArray
wordsList.toArray(array);
// Проверяем, заполнился ли наш массив. Спойлер: да
for (String word : array) {
System.out.println(word);
}
}
}
Nalika outputting, kita bakal weruh kabeh baris padha, lan iku bakal dadi cetha yen cara wis kapenuhan Uploaded kita digawe.
3. Dawane array sing ditularake luwih gedhe tinimbang dawa dhaptar
Cara kasebut bakal nulis kabeh unsur dhaptar menyang array, lan bakal nulis nilai kasebut menyang sel ing jejere unsur sing ditambahake pungkasannull
. Ayo demonstrasikan iki:
public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
// Создаем пустой массив, длина которого в 2 раза больше длины списка
String[] array = new String[wordsList.size() * 2];
for (int i = 0; i < array.length; i++) {
// В каждую ячейку запишем строковое представление текущего индекса
array[i] = String.valueOf(i);
}
// Отправляем массив в метод toArray
wordsList.toArray(array);
// Проверяем, что лежит в нашем массиве
for (String word : array) {
System.out.println(word);
}
}
}
Sawise mlaku cara main
ing console kita bakal weruh ing ngisor iki:
I
love
learning
on
JavaRush
null
6
7
8
9
Cara endi saka telu sing kudu sampeyan pilih? Ing versi wiwitan Jawa, luwih becik ngliwati larik kanthi dawane padha utawa luwih saka dawa dhaptar. Nanging, JVM modern duwe optimasi, lan ing sawetara kasus menehi kinerja luwih cepet kanggo cara sing liwati Uploaded dawa luwih cendhek saka dawa dhaftar. Dadi yen sampeyan nggunakake versi modern Jawa, lebokake array kosong menyang cara kaya sing ditindakake ing conto pisanan:
wordsList.toArray(new String[0]);
Cara nomer 3. Stream API
Cara iki cocok kanggo wong-wong sing pengin ora mung Ngonversi dhaftar menyang Uploaded, nanging uga ngatasi sawetara masalah liyane ing dalan. Lan uga kanggo wong sing kenal karo Java Stream API. JavaRush duwe artikel sing apik babagan topik iki . Ing bagean iki kita bakal katon ing sawetara conto nggunakake stream. Cara ngowahi dhaptar dadi array nggunakake stream:public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] strings = wordsList.stream()
.toArray(String[]::new);
for (String s : strings) {
System.out.println(s);
}
/*
Output:
I
love
learning
on
JavaRush
*/
}
}
Nanging yen sampeyan mung perlu kanggo matak dhaftar menyang Uploaded, iku luwih apik kanggo nindakake iki nggunakake cara toArray
sing diterangake ing Metode No. Nanging yen sampeyan pengin ora mung Ngonversi dhaftar menyang Uploaded, nanging uga kanggo nindakake sawetara tumindak ing saben unsur, banjur iki panggonan nengen kanggo sampeyan. Ayo nyoba ngowahi dhaptar kasebut dadi array supaya ing larik pungkasan kabeh baris ditulis nganggo huruf gedhe:
public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] strings = wordsList.stream()
.map(str -> str.toUpperCase())
.toArray(String[]::new);
for (String s : strings) {
System.out.println(s);
}
/*
Output:
I
LOVE
LEARNING
ON
JAVARUSH
*/
}
}
Ing kene .map(str -> str.toUpperCase())
kita wis nemtokake apa sing kudu ditindakake saben baris ing dhaptar. Ing kasus iki, kita mutusake kanggo ngowahi saben string menyang huruf gedhe lan banjur ngumpulake dadi array. Nggunakake Stream API ngidini sampeyan ora mung ngowahi saben nilai, nanging uga nyaring. Upaminipun kita pengin ngumpulake array saka dhaptar strings, nanging kanthi cara sing mung strings luwih saka rong karakter kalebu ing array:
public class Main {
public static void main(String[] args) {
List<String> wordsList = Arrays.asList("I", "love", "learning", "on", "JavaRush");
String[] strings = wordsList.stream()
.filter(str -> str.length() > 2)
.map(str -> str.toUpperCase())
.toArray(String[]::new);
for (String s : strings) {
System.out.println(s);
}
/*
Output:
LOVE
LEARNING
JAVARUSH
*/
}
}
Ing baris iki, .filter(str -> str.length() > 2)
kita wis nggawe saringan sing bakal ditrapake kanggo saben unsur dhaptar sadurunge mlebu ing array. Ing kasus iki, cara kasebut diarani saben baris length()
, lan yen asil ekspresi str.length() > 2
kasebut bener, baris kasebut bakal ana ing pilihan sing diasilake, lan pungkasane ing array. Yen ora, ora bakal kenek. Kene, mbok menawa, iku worth ngandika sing padha bisa ngrambah dening mung iterating liwat unsur lan nemtokke macem-macem Watesan. Sampeyan uga bisa nindakake kanthi cara iki. Stream API nyedhiyakake pendekatan sing luwih fungsional kanggo ngatasi masalah kasebut.
Asil
Ing artikel iki, kita ndeleng macem-macem cara kanggo ngowahi dhaptar dadi array:- panelusuran prasaja;
- cara
toArray;
- Stream API.
toArray
sing ditetepake ing antarmuka List
. Ana rong cara kasebut:
Object[] toArray();
T[] toArray(T[] a);
GO TO FULL VERSION