የቁልፍ ልዩነት - ዝርዝር ከተዋቀረ
አብዛኞቹ የፕሮግራሚንግ ቋንቋዎች አንድ አይነት የውሂብ ስብስብ ለማከማቸት ድርድር ይጠቀማሉ። የድርድር አንድ ትልቅ መሰናክል፣ የድርድር መጠኑ አንዴ ከተገለጸ፣ ሊስተካከል የማይችል መሆኑ ነው። ፕሮግራም አድራጊው ከድርድር መጠን በላይ የሆኑ እሴቶችን ማከማቸት ከፈለገ አዲስ አደራደር መፍጠር እና ያሉትን ንጥረ ነገሮች ወደ አዲሱ ድርድር መቅዳት አለበት። በእነዚህ አጋጣሚዎች ስብስቦችን መጠቀም ይቻላል. በክምችቶች ድጋፍ ኤለመንቶችን መጨመር, ክፍሎችን እና ሌሎች ብዙ ስራዎችን መሰረዝ ይቻላል. እንደ ጃቫ ባሉ የፕሮግራሚንግ ቋንቋዎች የተለያዩ አይነት ስብስቦች አሉ። ዝርዝር እና አዘጋጅ የክምችቶች ተዋረድ በይነገጾች ናቸው።ለሌሎች በይነገጾች የመነሻ በይነገጽ ስብስብ ነው። በዝርዝሮች እና በሴቶች መካከል ያለው ቁልፍ ልዩነት ዝርዝር አንድን ንጥረ ነገር ብዙ ጊዜ ማከማቸትን የሚደግፍ ሲሆን Set ግን አንድ አይነት ንጥረ ነገር ብዙ ጊዜ ማከማቸትን አይደግፍም። ስለዚህ፣ ስብስብ ማባዛትን አይፈቅድም።
ሊስት ምንድን ነው?
ዝርዝሩ የስብስብ በይነገጽን የሚያራዝም በይነገጽ ነው። በክምችት በይነገጽ ውስጥ በርካታ ዘዴዎች አሉ። የመደመር ዘዴ አንድን ንጥረ ነገር ለመጨመር ይረዳል. ‘የማስወገድ ዘዴ’ አንድን አካል ማስወገድ ነው። ኤለመንቶችን ከስብስቡ ለማስወገድ 'ሁሉንም ዘዴን' ለማስወገድ ብዙ አባላትን ለመጨመር 'addAll method' አለ። በውስጡ የያዘው ዘዴ አንድ የተወሰነ ነገር በዝርዝሩ ውስጥ መኖሩን ወይም አለመሆኑን ለማወቅ ይረዳል. 'containsAll' የነገሮች ስብስብ በስብስቡ ውስጥ መኖሩን ወይም አለመሆኑን መፈለግ ነው። የመድገሚያ ዘዴው በዝርዝሩ ውስጥ ያሉትን እቃዎች ለማዞር ያገለግላል. ዝርዝሩ ስብስቡን ሲያሰፋ ሁሉም የስብስብ ዘዴዎች የዝርዝር ናቸው። ከእነዚህ ዘዴዎች ሌላ፣ ዝርዝሩ እንደ ማግኘት እና ማዘጋጀት ያሉ ዘዴዎች አሉት።የፕሮግራም አድራጊው የማግኛ ዘዴን በመጠቀም በተወሰነ መረጃ ጠቋሚ ላይ እሴት ሊያገኝ ይችላል። የፕሮግራም አድራጊው የተቀመጠውን ዘዴ በመጠቀም በተወሰነ መረጃ ጠቋሚ ላይ እሴት ማዘጋጀት ይችላል. 'indexOf' የአንድን ንጥረ ነገር መረጃ ጠቋሚ ለማግኘት ጥቅም ላይ ይውላል።
በዝርዝር ውስጥ፣ ክዋኔዎቹ እንደየቦታው ሊከናወኑ ይችላሉ። ፕሮግራመር ወደ መረጃ ጠቋሚው የሚታከልበትን የውሂብ አካል ማቅረብ ይችላል። ስለዚህ ወደ ልዩ ኢንዴክስ ይጨመራል. የፕሮግራም አድራጊው መረጃ ጠቋሚ ካልሰጠ, ንጥረ ነገሩ በዝርዝሩ መጨረሻ ላይ ይታከላል. እንዲሁም የገባውን ቅደም ተከተል ይጠብቃል. ኤለመንት 1 ከተጨመረ እና ኤለመን2 ከተጨመረ፣ element1 ከ element2 በፊት ይሆናል።
ስእል 01፡ ዝርዝር እና አዘጋጅ
ArayList፣ LinkedList፣ Vector ዝርዝርን የሚተገብሩ ክፍሎች ናቸው። በ ArrayList ውስጥ፣ ኤለመንቱን መድረስ ፈጣን ነው ነገር ግን ማስገባት እና መሰረዝ ዝቅተኛ ነው።ArrayList በክር-አስተማማኝ አይደለም። ተመሳሳዩን ArrayList ከበርካታ ክሮች መድረስ ተመሳሳይ ውጤት ላይሰጥ ይችላል። በ LinkedList ውስጥ፣ ንጥረ ነገሮቹ ከኋላ እና ወደ ፊት የተገናኙ ናቸው። LinkedListን በመጠቀም አባሎችን ማስገባት እና መሰረዝ ከ ArrayList የበለጠ ፈጣን ነው። LinkedList ሁለቱንም ዝርዝር እና ወረፋ ተግባራዊ ያደርጋል። ቬክተር ከ ArrayList ጋር ተመሳሳይ ነው፣ ነገር ግን ሁሉም ዘዴዎች ስለተመሳሰሉ ከመርገጥ-አስተማማኝ ነው።
ምን ተቀናብሯል?
Set የስብስብ በይነገጽን የሚያራዝም በይነገጽ ነው። Set interface ስብስቡን ሲያሰፋ ሁሉም የስብስብ ዘዴዎች የስብስብ ናቸው። ስብስብ የተባዛ እሴቶችን አይደግፍም። ስለዚህ, ፕሮግራም አውጪው አንድ አይነት ንጥረ ነገር ሁለት ጊዜ ማከማቸት አይችልም. ልዩ የሆነ የንጥረ ነገሮች ስብስብ ይይዛል. የ SortedSet በይነገጽ አዘጋጅ በይነገጽን ያራዝመዋል። SortedSet ንጥረ ነገሮቹን በቅደም ተከተል ያቆያል። የNavigableSet በይነገጽ ደርደርሴትን ያራዝመዋል። NavigableSet እንደ ዝቅተኛ፣ ወለል፣ ጣሪያ ወዘተ ያሉ የአሰሳ ዘዴዎችን ያቀርባል።
HashSet፣ LinkedHashSet እና TreeSet የሴስት በይነገጽን የሚተገብሩ ክፍሎች ናቸው።HashSet Set በይነገጽን ተግባራዊ ያደርጋል። የገባውን ቅደም ተከተል አይጠብቅም። እሴቶቹ እንደ ሀ፣ x፣ b ከገቡ እንደ፣ x፣ a፣ b። LinkedSet የገባውን ትዕዛዝ ይጠብቃል። ንጥረ ነገሮቹ በ a, x, b ቅደም ተከተል ከተጨመሩ, የማከማቻው ቅደም ተከተል a, x, b ይሆናል. TreeSet Set እና NavigableSetን ተግባራዊ ያደርጋል። የማስገባቱን ቅደም ተከተል አይጠብቅም ነገር ግን ንጥረ ነገሮቹን በቅደም ተከተል ያስቀምጣል. የገባው ቅደም ተከተል a, c, b ከሆነ, ንጥረ ነገሮቹ እንደ a, b, c ይቀመጣሉ. ሁሉም HashSet፣ LinkedHashSet እና TreeSet ምንም የተባዙ ክፍሎች አይኖራቸውም።
በዝርዝር እና ቅንብር መካከል ያሉ ተመሳሳይነቶች ምንድን ናቸው?
- ሁለቱም ዝርዝር እና አዘጋጅ በይነገጾች የስብስብ በይነገጽን ያራዝማሉ።
- ሁለቱም ዝርዝር እና የድጋፍ ስራዎችን ያዋቅሩ እንደ ማከል፣ አባሎችን ማስወገድ።
በዝርዝር እና ቅንብር መካከል ያለው ልዩነት ምንድን ነው?
ከዝርዝር ጋር ሲነጻጸር |
|
የዝርዝር በይነገጽ በመረጃ ጠቋሚው ላይ በመመስረት እንደ ማስገባት፣ መሰረዝ ያሉ ተግባራትን ለማከናወን ዘዴዎችን የያዘ የስብስብ ንዑስ በይነገጽ ነው። | Set Interface ልዩ ክፍሎችን እየጠበቁ እንደ ማስገባት፣ አባሎችን መሰረዝን የመሳሰሉ ተግባራትን ለማከናወን ዘዴዎችን የያዘ የስብስብ ንዑስ በይነገጽ ነው። |
ክፍሎች | |
ArrayList፣ Vector እና LinkedList የዝርዝር በይነገጽን የሚተገብሩ ክፍሎች ናቸው። | HashSet፣ LinkedHashSet እና TreeSet Set በይነገጽን የሚተገብሩ ክፍሎች ናቸው። |
ኤለመንት ብዜት | |
ዝርዝር የአባለ ነገሮች መባዛትን ይደግፋል። | አዘጋጅ የንጥረ ነገሮችን ማባዛትን አይደግፍም። ንጥረ ነገሮች ልዩ ናቸው። |
ማጠቃለያ - ዝርዝር ከተዋቀረ
ስብስቦች ንጥረ ነገሮችን በተለዋዋጭ ለማከማቸት ያገለግላሉ። እንደ ጃቫ ያሉ የፕሮግራም አወጣጥ ቋንቋዎች ስብስብ በይነገጽን ያቀርባል። ዝርዝር እና አዘጋጅ የስብስብ በይነገጽ የሆኑ ሁለት በይነገጾች ናቸው። ሁለቱም በይነገጾች ስብስብን ያራዝማሉ። ይህ ጽሑፍ በዝርዝር እና በሴት መካከል ያለውን ልዩነት ተወያይቷል. በዝርዝሮች እና በሴቶች መካከል ያለው ቁልፍ ልዩነት ዝርዝሩ አንድን ንጥረ ነገር ብዙ ጊዜ ማከማቸትን የሚደግፍ ሲሆን Set ግን አንድ አይነት ንጥረ ነገር ብዙ ጊዜ ማከማቸትን አይደግፍም። ማዋቀር ሁልጊዜ ልዩ ክፍሎችን ያቆያል።