JavaRush /Blog Jawa /Random-JV /Dhaptar Java menyang array: Ngonversi dhaptar unsur dadi ...
Анзор Кармов
tingkat
Санкт-Петербург

Dhaptar Java menyang array: Ngonversi dhaptar unsur dadi array

Diterbitake ing grup
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. Dhaptar Java menyang array: ngowahi dhaptar unsur dadi array - 1Ayo 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. Antarmuka Listnduweni rong cara toArraysing 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 mainlan 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 pungkasan null. 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 maining 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 toArraysing 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() > 2kasebut 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;
  • caratoArray;
  • Stream API.
Pilihan sing paling apik yaiku nggunakake cara toArraysing ditetepake ing antarmuka List. Ana rong cara kasebut:
  • Object[] toArray();
  • T[] toArray(T[] a);
Sing pisanan ora nampa bantahan, nanging ngasilake macem-macem obyek, mula sampeyan kudu nggunakake casting jinis eksplisit. Kapindho ngasilake array saka jinis sing dikarepake, nanging njupuk array minangka argumen. Iku paling apik kanggo pass Uploaded kosong kanggo cara, lan sampeyan bakal seneng. Nggunakake Stream API ngidini sampeyan ora mung ngowahi dhaptar menyang larik, nanging uga nindakake sawetara tumindak ing sadawane dalan, kayata nyaring utawa ngowahi unsur sadurunge nambahake menyang larik.

Peer

Coba baleni kabeh conto saka artikel iki dhewe, nanging tinimbang dhaptar strings asli, gunakake dhaptar integer saka 0 nganti 10. Alami, sampeyan kudu ngganti sawetara kahanan saka conto sing mung ditrapake kanggo strings menyang anyar. kahanan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION