როგორ დავალაგოთ არიალისტი ჯავა კოლექციების გარეშე


პასუხი 1:

კითხვა: როგორ დავალაგო არარისტისტი კოლექციების გამოყენების გარეშე. დალაგება?

მარტივი - ისევე, როგორც C, ან იქნებ C ++. Ხელით.

თქვენ ახდენთ მასივის / სიის მეშვეობით გამეორებას. პირველი მარყუჟის კორპუსში თქვენ გაქვთ მე -2 მარყუჟი, რომელიც ასევე აგრეგავს მასივის / სიის იგივე ელემენტებს - მაგალითად:

for (int iLength = lstArray.length, iLoop = 0; iLoop for (int jLength = iLength, jLoop = 0; jLoop { // აქ გააკეთე მეტი }

აქ თქვენ შეადარებთ lstArray- ს ინდექსში iLoop და jLoop და შეცვლით ერთეულებს შედეგების საფუძველზე, შეცვლის ალგორითმის გამოყენებით. შეცვლის ალგორითმი მარტივია:

დრო = = = დროებითი;

ამ ოპერაციის შემდეგ (და ეს ჩვეულებრივ ხორციელდება საკუთარი ფუნქციით / მეთოდით - მე მჯერა, რომ ჯავას აქვს უკვე დაწერილი მეთოდი, მაგრამ დარწმუნებული არ ვარ 100%) და ორივე მარყუჟის მთლიანი ნაწილი დასრულებულია, მასივი უნდა დალაგდეს. დიახ, თუ გსურთ ეს უფრო ძლიერი გახადოთ, შეგიძლიათ შეამოწმოთ, რომ არ უყურებთ ერთსა და იმავე ინდექსს (iLoop == jLoop), მაგრამ ეს ნამდვილად არ არის მნიშვნელოვანი, რადგან თქვენი შედარება უნდა შედარდეს> ან <ასე რომ იქ შეცვლის იმავე ინდექსს, როგორც lstArray.get (iLoop). ტოლები (lstArray.get (iLoop)) == მართალია !!!

ჰო, წადი ძველ სკოლაში, თუ გინდა თავი აარიდო Collections.sort ;-)

მე გითხარით ბუშტის დალაგების შესახებ, მაგრამ ასევე შეგიძლიათ სწრაფად დახარისხოთ, თუ გინდათ - ჯავა აბსტრაქტს ბევრ ალგორითმს კოლექციებში. დალაგება, მაგრამ თუ იცით რას აკეთებთ, უკეთესი იქნებით.


პასუხი 2:

სიებისთვის შერწყმის დალაგებას ვაკეთებ: სიიდან ამოიღე 2 და დაალაგე; აიღე შემდეგი 2 და დაალაგე ისინი; შერწყმა მათ 4-ად; გაიმეორეთ, რომ შექმნათ კიდევ 4; 4-ების შერწყმა 8-ად; გაიმეორეთ, რომ შექმნათ კიდევ 8; 8-ების შერწყმა 16-ში; და ა.შ. little ცოტათი რეკურსიულ სიტუაციას შეუძლია გაუმკლავდეს ყველა ლოგიკას მცირე აურზაურით და მცირედი ხარჯებით და ღირებულება არც ისე ცუდია.


პასუხი 3:

თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი შედარება, უგულებელყოთ შედარების მეთოდი, მაგ

myCollection.sort (new Comparator () {public int შედარება (T o1, T o2) {/ *… * /}});

აქ ხდება ანონიმური შიდა კლასის საშუალებით, მაგრამ შეგიძიათ გააკეთოთ საკუთარი კლასი, ან გქონდეთ კლასი სტატიკური შედარების ჯგუფით და ა.შ.


პასუხი 4:

დამოკიდებულია მონაცემთა ტიპზე, რომელსაც თქვენი არალისტი ფლობს.

ციფრებისთვის შეგიძლიათ დაწეროთ პროგრამა, რომელიც მიიღებს Arraylist- ს პარამეტრად, დალაგებთ მას და ა.შ. სხვა მონაცემთა ტიპებისთვის.

paklim.org © 2021