JavaRush /Blog Jawa /Random-JV /Koleksi ing Jawa | Koleksi Jawa

Koleksi ing Jawa | Koleksi Jawa

Diterbitake ing grup
Hello! Sajrone sawetara pawulangan kepungkur, kita wis nggawe kemajuan gedhe babagan nguwasani ArrayList. Nanging, sajrone wektu iki, kita mung nindakake operasi sing paling gampang: mbusak, nglebokake, output menyang konsol. Mesthi, iki dudu pungkasan saka dhaptar masalah sing diadhepi pangembang nalika nggunakake ArrayList . Elinga kuliah babagan array lan kelas Arrays ? Iki dikembangake dening pangripta Jawa khusus kanggo ngatasi masalah umum sing ditemoni programer nalika nggarap array. Kepiye babagan ArrayList ? Mesthi ana sawetara dhaptar tugas khas kanggo dheweke uga. Apa padha kabeh dipun ginakaken ing sawetara kelas kapisah, utawa kita kudu nulis prilaku sing dikarepake kanthi manual saben wektu? Mesthi, sampeyan ora perlu nulis kabeh dhewe. Operasi paling umum sing ditindakake nalika nggunakake koleksi ing Jawa wis ditindakake ing Koleksi kelas statis khusus. Koleksi Kelas - 1

Koleksi ing Jawa

"Koleksi" minangka jeneng umum kanggo sawetara struktur data ing Jawa. Data bisa disimpen ing macem-macem cara. Nganti saiki, kita mung sinau kelas ArrayList , ing ngendi data disimpen ing array. Kita bakal kenalan karo koleksi liyane mengko. Saiki cukup kanggo mangerteni yen kelas Koleksi dirancang ora mung karo ArrayList, nanging uga karo jinis koleksi liyane ing Jawa (mulane, jenenge). Dadi, tugas apa sing bisa diatasi ing kelas Koleksi nalika nggarap ArrayList? Sing pisanan lan paling jelas yaiku ngurutake. Ing kuliah babagan array, kita ndeleng conto kanthi angka, lan saiki ayo goleki conto nganggo senar. Kanggo ngurutake isi koleksi, kelas Koleksi ngetrapake metode ing ngisor iki sort():
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       System.out.println(solarSystem);

   }
}
Kesimpulan:

[Венера, Земля, Марс, Меркурий, Нептун, Сатурн, Уран, Юпитер]
Garis-garis kasebut wis diurutake miturut abjad! Apa ing urutan abjad? Kelas Stringwis diprogram kanggo nemtokake persis carane strings dibandhingake karo saben liyane (saben abjad). Kanggo kelas sing bakal digawe dhewe, sampeyan bisa ngleksanakake mekanisme comparison dhewe, nanging kita bakal pirembagan bab iki ing ceramah liyane. Kajaba iku, kelas Koleksi ngidini sampeyan nemokake unsur minimal lan maksimal ing file ArrayList. Iki ditindakake kanthi nggunakake metode min()lan max():
public static void main(java.lang.String[] args) {

   ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
   System.out.println(Collections.max(numbers));
   System.out.println(Collections.min(numbers));

}
Kesimpulan:

7
1
Iki, mesthi, luwih trep tinimbang nulis kode kanthi manual kanggo ngliwati kabeh unsur lan nggoleki unsur paling gedhe / paling cilik :) Cara liya sing migunani yaiku reverse(). Yen kita kudu "mbalikke" dhaptar supaya unsur-unsur ing urutan mbalikke, kepiye carane? Mesthine ora gampang nulis algoritma kasebut dhewe :) Untunge, metode kasebut reverse()wis ngerti carane nindakake iki. Contone, kita ora seneng cara cara sort()ngurutake planet kita miturut urutan abjad, lan kita pengin ngganti urutan kasebut mbalikke - saka Z dadi A:
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       Collections.reverse(solarSystem);
       System.out.println(solarSystem);

   }
}
Kesimpulan:

[Юпитер, Уран, Сатурн, Нептун, Меркурий, Марс, Земля, Венера]
Miturut cara, ing kene kita kerep ngomong babagan ngurutake, urutan unsur, lsp. Apa yen tugas kita pancen ngelawan? Contone, kita nyoba kanggo ngleksanakake mekanisme lotre. Kita wis ditambahaké 100 nomer kanggo reel, kang kudu katon ing layar siji ing wektu. Peserta pisanan sing nyabrang kabeh nomer ing tiket menang. Gampang banget kanggo ngetrapake mekanisme kasebut kanthi nggunakake metode shuffle():
public class Main {

   public static void main(java.lang.String[] args) {

       ArrayList<Integer> lottery = new ArrayList<>(100);
       for (int i = 1; i <= 100; i++) {

           lottery.add(i);//add numbers from 1 to 100 to the drum
       }

       Collections.shuffle(lottery);//mix
       System.out.println("Attention! The first 10 numbers appear from the drum!");
       for (int i = 0; i < 10; i++) {

           System.out.println(lottery.get(i));
       }

   }
}
Kesimpulan:

Внимание! Из барабана появляются первые 10 чисел!
32
61
4
81
25
8
66
35
42
71
Iku sing prasaja! Masalah wis ditanggulangi, lan kita Piece saka game ditulis :) Saiki ayo kang mbayangno kahanan beda. Sadurungé, kita nggawe dhaptar solarSystemkaro planèt sing kadhaptar ing. Lan misale jek cocog karo kita kabeh, yen ora kanggo siji bab: sampeyan bisa mbusak unsur saka iku lan nambah anyar! Iki jelas dudu prilaku sing dikarepake: sistem tata surya ing program kita kudu ora owah. Kelas Koleksi nduweni cara sing menarik banget - unmodifiableList(). Iku nggawe versi immutable saka dhaftar diwenehi. Sampeyan ora bisa nambah utawa mbusak unsur kasebut. Ing kasus dhaptar planet ing tata surya, iki persis sing kita butuhake!
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       List<String> solarSystem = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune)));
       solarSystem.add("Pluto");//try to add a new element
   }
}

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.Collections$UnmodifiableCollection.add(Collections.java:1075)
	at Main.main(Main.java:21)
Error: solarSystemSaiki sampeyan ora bisa nambah apa-apa! Ing bab mung sampeyan kudu mbayar manungsa waé kanggo ing kasus iki sing jinis variabel kudu List<>, lan ora ArrayList<>(cara iki ngasilake obyek saka persis jinis iki, umum kanggo kabeh jinis dhaptar). Kahanan umum liyane sing bisa kedadeyan sajrone kerja yaiku programer nambahake unsur ing urutan sing salah. Yen kedadeyan kasebut, lan Mercury lan Neptunus diganti kanthi ora sengaja, cara ing ngisor iki bakal mbantu kita mbenerake kesalahan iki swap():
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(neptune, venus, earth, mars
       , jupiter, saturn, uranus, mercury));// wrong planet order
       System.out.println(solarSystem);

       Collections.swap(solarSystem, solarSystem.indexOf(mercury), solarSystem.indexOf(neptune));
       System.out.println(solarSystem);

   }
}
Kita ngliwati dhaptar kita menyang metode swap(), uga indeks saka rong unsur sing kudu diganti. Wigati dimangerteni: cara kasebut bisa digunakake kanthi khusus karo indeks, lan ora nganggo tautan. Mulane, ing kene kita butuh cara ArrayList.indexOf(). Kesimpulan:

[Нептун, Венера, Земля, Марс, Юпитер, Сатурн, Уран, Меркурий]

[Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран, Нептун]
Pungkasan, ayo kenalan karo metode sing menarik banget - disjoint(). Priksa manawa rong koleksi duwe persimpangan, yaiku, paling ora siji unsur sing padha. Yen ora, bali true, yen ya, bali false.
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystemPart1 = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars));
       ArrayList<String> solarSystemPart2 = new ArrayList<>(Arrays.asList(jupiter, saturn, uranus, neptune));

       System.out.println(Collections.disjoint(solarSystemPart1, solarSystemPart2));

   }
}
Kaya sing sampeyan ngerteni, unsur ing rong dhaptar kita beda-beda, mula program kasebut ngasilake true. Iki minangka kelas sing menarik lan migunani banget. Kaya Arrays, dheweke nindakake akeh rutinitas, kerja kasar kanggo kita, ngidini kita fokus ing perkara liyane. Waca babagan ing dokumentasi Oracle , ana cara liyane ing kana.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION