Maraming mga nagsisimula ang pinaghalo-halo ang konsepto ng Arrays.asList() na pamamaraan sa istruktura ng data na ArrayList. Kahit na maaaring magkamukha at magkatulad ang mga ito, ang dalawang ito ay lubos na magkaiba pagdating sa pagpapatupad. Sa post na ito, sasakupin namin ang pangunahing paggamit ng Arrays.asList() na pamamaraan at aalisin ang ilang umiiral na kalituhan na nauugnay dito.
Bakit ginagamit ang Arrays.asList()?
Kung mayroon kang Array na kailangan mong gawing listahan, ang java.util.Arrays ay nagbibigay ng wrapper na Arrays.asList() upang maihatid ang layuning ito. Sa simpleng salita, ang paraang ito ay kumukuha ng array bilang parameter at nagbabalik ng listahan. Ang mga pangunahing bahagi ng Java platform API ay binuo bago ipinakilala ang balangkas ng mga koleksyon. Kaya paminsan-minsan, maaaring kailanganin mong magsalin sa pagitan ng mga tradisyonal na array at ng mas modernong mga koleksyon. Ang function na ito ay nagsisilbing link sa pagitan ng Collections at Array based na API.Halimbawa
Tingnan ang sumusunod na halimbawa:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
String[] teamMembers = {"Amanda", "Loren", "Keith"};
// using aslist() method
List teamList = Arrays.asList(teamMembers);
System.out.println("List : " + teamList);
HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
System.out.println("HashSet : " + teamHashSet);
}
}
Output:
Listahan : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // Ang HashSet ay hindi nagpapanatili ng kaayusan
Paano magkaiba ang Arrays.asList() at ArrayList?
Kapag tinawag mo ang paraan ng Arrays.asList() sa isang array, ang ibinalik na object ay hindi isang ArrayList (Isang resizable array na pagpapatupad ng List interface). Ito ay isang view object na may get() at set() na mga pamamaraan na nag-a-access sa pinagbabatayan na array. Ang lahat ng mga pamamaraan na magpapabago sa laki ng array gaya ng add() o remove() ng nauugnay na iterator ay nagtatapon ng UnsupportedOperationException . Ang dahilan kung bakit matagumpay na nag-compile ang java program ngunit nagbibigay ng Runtime Exception ay na, tila, ang isang "Listahan" ay ibinalik bilang resulta ngArrays.asList() . Kung saan pinahihintulutan ang lahat ng pagpapatakbo ng pagdaragdag/pagtanggal. Ngunit dahil, ang pinagbabatayan na istraktura ng data ay isang hindi nababagong "array" , kung kaya't ang isang pagbubukod ay itinapon sa oras ng pagtakbo. Narito ang isang snippet na nagpapakita kung ano ang hitsura nito:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
Integer[] diceRoll = new Integer[6];
//using aslist() method
List diceRollList = Arrays.asList(diceRoll);
System.out.println(diceRollList);
// using getters and setters to randomly access the list
diceRollList.set(5, 6);
diceRollList.set(0, 1);
System.out.println(diceRollList.get(5));
System.out.println(diceRollList.get(1));
System.out.println(diceRollList);
diceRollList.add(7); // Add a new Integer to the list
}
}
Output:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Exception sa thread na "main" java.lang.UnsupportedOperationException sa java.util.AbstractList.add(AbstractList. java:148) sa java.util.AbstractList.add(AbstractList.java:108) sa ArraysAsListDemo.main(ArraysAsListDemo.java:20)
Mga halimbawa para sa paggamit ng asList() na pamamaraan
Bilang ng Java SE 5.0, ang asList() na paraan ay idineklara na may variable na bilang ng mga argumento. Sa halip na magpasa ng array, maaari mo ring ipasa ang mga indibidwal na elemento. Halimbawa:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
List seasons = Arrays.asList("winter", "summer", "spring", "fall");
List odds = Arrays.asList(1, 3, 5, 7, 9);
System.out.println(seasons);
System.out.println(odds);
}
}
Output:
[taglamig, tag-araw, tagsibol, taglagas] [1, 3, 5, 7, 9]
GO TO FULL VERSION