1. கொள்கலன்கள் மற்றும் சேகரிப்புகள்

கொள்கலன்கள் அல்லது சேகரிப்புகள் என்பது பல பொருட்களை ஒரே நேரத்தில் சேமித்து செயலாக்க அனுமதிக்கும் வகுப்புகள். உங்களுக்கு ஏற்கனவே இரண்டு வகையான கொள்கலன்கள் தெரியும்: வரிசைகள் மற்றும் பட்டியல்கள்.

ஜாவாவில் பல டஜன் சேகரிப்புகள் உள்ளன, ஒவ்வொன்றும் அதன் சொந்த குறிப்பிட்ட வழியில் கூறுகளை சேமிக்கிறது. அவற்றில் சில இங்கே:

சேகரிப்பு வர்க்கம் விளக்கம்
List
ArrayList
பட்டியல்
LinkedList
இணைக்கப்பட்ட பட்டியல்
Vector
திசையன்
Stack
அடுக்கு
Set
HashSet
அமைக்கவும்
TreeSet
LinkedHashSet
Queue
PriorityQueue
வரிசை
ArrayQueue
Map
HashMap
வரைபடம்/அகராதி
TreeMap
HashTable

இங்கே பெயர்கள் தெளிவற்றவை. பெரும்பாலான நிரலாக்க மொழிகளில், இந்த தரவு கட்டமைப்புகள் அனைத்தும் சேகரிப்புகள் என்று அழைக்கப்படுகின்றன, ஆனால் ஜாவாவில் இல்லை. ஜாவாவில், இந்த வகுப்புகளில் சில இடைமுகத்தை செயல்படுத்துகின்றன Collection, மற்றவை இல்லை.

அதன்படி, சேகரிப்புகள் பரந்த அர்த்தத்தில் சேகரிப்புகளாகவும், குறுகிய அர்த்தத்தில் சேகரிப்புகளாகவும் பிரிக்கப்படுகின்றன (இடைமுகத்தை செயல்படுத்துபவை மட்டுமே Collection).

எனவே குழப்பத்தைத் தவிர்க்க, சேகரிப்புகளைப் பற்றி பேசும்போது, ​​வார்த்தையின் குறுகிய அர்த்தத்தில், அதாவது இடைமுகத்தை செயல்படுத்தும் வகுப்புகள் Collection. , Listமற்றும் Setவகைகள் Queueஅனைத்தும் சேகரிப்புகள். பரந்த பொருளில் சேகரிப்புகள் பொதுவாக கொள்கலன்கள் என்று அழைக்கப்படுகின்றன . இவை போன்ற வகைகள் Mapமற்றும் அணிவரிசைகள் அடங்கும்.


2. HashSetசேகரிப்பு

வகுப்பு HashSetஎன்பது ஒரு பொதுவான தொகுப்பு தொகுப்பு. பல வழிகளில், இது வகுப்பைப் போன்றது ArrayList. சில வழிகளில், இது மிகவும் பழமையான பதிப்பாகும்.

HashSetஇது போன்ற ஒரு அறிக்கையைப் பயன்படுத்தி நீங்கள் ஒரு பொருளை உருவாக்கலாம் :

HashSet<Type> name = new HashSet<Type>();

Typeசேகரிப்பில் நாம் சேமித்து வைக்கும் கூறுகளின் வகை எங்கே HashSet.

வகுப்பில் HashSetஇது போன்ற முறைகள் உள்ளன:

முறை விளக்கம்
void add(Type value)
valueதொகுப்பில் உறுப்பைச் சேர்க்கிறது
boolean remove(Type value)
valueதொகுப்பிலிருந்து உறுப்பை நீக்குகிறது . அத்தகைய உறுப்பு இருந்தால்
திரும்பும்true
boolean contains(Type value)
சேகரிப்பில் valueஉறுப்பு உள்ளதா என்பதைச் சரிபார்க்கிறது
void clear()
சேகரிப்பை அழிக்கிறது, அனைத்து கூறுகளையும் நீக்குகிறது
int size()
சேகரிப்பில் உள்ள உறுப்புகளின் எண்ணிக்கையை வழங்குகிறது

ஒரு தொகுப்பைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு இங்கே.

வணக்கம் சொன்னால் பயனாளியிடம் விடைபெறும் நிரலை எழுதுவோம். அதை மிகவும் சுவாரஸ்யமாக்க, எங்கள் நிரலுக்கு பல மொழிகளில் "ஹலோ" புரியும் திறனை வழங்குவோம்.

குறியீடு குறிப்பு
HashSet<String> set = new HashSet<String>();

set.add("Hello");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
HashSetகூறுகளை சேமிக்கும் ஒரு பொருளை உருவாக்கவும் String.


மாறியில் பல்வேறு மொழிகளில் வாழ்த்துகளைச் சேர்க்கிறோம் set.




கன்சோலில் இருந்து ஒரு வரியைப் படியுங்கள்.


எங்கள் வாழ்த்துகளின் தொகுப்பில் சரம் இருந்தால், நாங்கள் விடைபெறுகிறோம்.


3. அமை

தொகுப்பு Setகூறுகளின் தொகுப்பை வைத்திருக்க வடிவமைக்கப்பட்டுள்ளது. அதனால்தான் இது ஒரு Set(தொகுப்பு) என்று அழைக்கப்படுகிறது. இத்தொகுப்பு மூன்று அம்சங்களைக் கொண்டுள்ளது.

ஒரு தொகுப்பில் செயல்பாடுகள்

ஒரு தொகுப்பில் நீங்கள் செய்யக்கூடிய மூன்று விஷயங்கள் மட்டுமே உள்ளன: தொகுப்பில் கூறுகளைச் சேர்க்கவும், தொகுப்பிலிருந்து கூறுகளை அகற்றவும் மற்றும் தொகுப்பில் ஒரு குறிப்பிட்ட உறுப்பு உள்ளதா எனச் சரிபார்க்கவும். அவ்வளவுதான்.

உத்தரவு இல்லை

இந்தத் தொகுப்பில் உள்ள உறுப்புகளுக்கு குறியீடுகள் இல்லை. நீங்கள் ஒரு குறியீட்டின் மூலம் ஒரு உறுப்பைப் பெற முடியாது அல்லது ஒரு குறிப்பிட்ட குறியீட்டில் ஒரு தொகுப்பிற்கு மதிப்பை எழுத முடியாது. ஒரு தொகுப்பில் இல்லை get()மற்றும் set()முறைகள் உள்ளன.

தனித்துவமான கூறுகள்

ஒரு தொகுப்பில் உள்ள அனைத்து கூறுகளும் தனித்துவமானது. ஒரு பட்டியலைப் போலன்றி, ஒரு தொகுப்பில் ஒரு உறுப்பின் ஒரு நிகழ்வு மட்டுமே இருக்கும். ஒரு பொருள் தொகுப்பில் உள்ளதா இல்லையா - மூன்றாவது விருப்பம் இல்லை. நீங்கள் நிறங்களின் தொகுப்பில் மூன்று முறை கருப்பு சேர்க்க முடியாது. அது ஒன்று உள்ளது அல்லது இல்லை.

கூறுகளைக் கண்டறிதல்

நீங்கள் ஒரு புதிய உறுப்பைச் சேர்க்கும்போது, ​​ஒரு உறுப்பை அகற்றும்போது அல்லது ஒரு தொகுப்பில் ஒரு உறுப்பு இருக்கிறதா என்பதைச் சரிபார்க்கும்போது, ​​அந்த உறுப்பைத் தேடுவது முறையில் செய்யப்படுகிறது. அனுப்பப்பட்ட உறுப்பு முதலில் சேகரிப்பின் உறுப்புகளுடன் ஒப்பிடப்படுகிறது hashCode(), பின்னர் மதிப்புகள் பொருந்தினால் hashCode(), ஆல் ஒப்பிடப்படும் equals().



4. சேகரிப்புகளை ஒப்பிடுதல்: ListvsSet

இரண்டு வகையான சேகரிப்புகளை ஒப்பிட்டுப் பார்ப்போம்: Listஒன்று Setமற்றொன்றை விட மிகவும் சாதகமானதாக இருக்கும் போது, ​​மற்றும் நேர்மாறாகவும் இருக்கும் முக்கிய வேறுபாடுகளைப் பார்ப்போம்.

உதாரணமாக பொம்மைகளைப் பயன்படுத்தி பட்டியல் மற்றும் தொகுப்பை ஒப்பிட முயற்சிப்போம்.

List(பட்டியல்) சேகரிப்பு ஒரு விளையாட்டு அறையில் சுவரில் அமைக்கப்பட்ட பொம்மைகளின் தொகுப்பைப் போன்றது. பட்டியலின் முடிவில் நீங்கள் ஒரு பொம்மையைச் சேர்க்கலாம். உங்களுக்கு உண்மையிலேயே தேவைப்பட்டால், நீங்கள் அதை நடுவில் செருகலாம் (ஆனால் ஏற்கனவே உள்ள சில பொம்மைகளை நகர்த்த வேண்டும்).

ஒவ்வொரு பொம்மைக்கும் ஒரு குறியீடு உள்ளது. நீங்கள் ஒரு பொம்மையை அதன் குறியீட்டின் மூலம் குறிப்பிடலாம் மற்றும் பொம்மை எண் 7 ஐ பொம்மை எண் 13 உடன் மாற்றலாம். நீங்கள் பட்டியலிலிருந்து பொம்மை எண் 4 ஐ அகற்றலாம். இறுதியாக, பட்டியலில் உள்ள ஒவ்வொரு பொம்மையின் குறியீட்டையும் நீங்கள் கற்றுக்கொள்ளலாம்.

Set(தொகுப்பு) சேகரிப்பு என்பது தரையின் நடுவில் உள்ள பொம்மைகளின் குவியல் போன்றது. நீங்கள் குவியல் ஒரு பொம்மை சேர்க்க முடியும், மற்றும் நீங்கள் குவியலில் இருந்து ஒரு பொம்மை நீக்க முடியும். ஆனால் இந்த பொம்மைகளுக்கு அவற்றுடன் தொடர்புடைய நிலையான குறியீடு இல்லை.

அல்லது உங்கள் குழந்தையின் பிறந்தநாளுக்கு நீங்கள் ஒரு பொம்மையைத் தேர்வு செய்கிறீர்கள் என்று வைத்துக்கொள்வோம். முதலில், அவரிடம் ஏற்கனவே பொம்மை இருக்கிறதா என்று நீங்கள் நினைக்கிறீர்கள். அவர் ஏற்கனவே வைத்திருக்கும் அனைத்து பொம்மைகளும் நீங்கள் வாங்கத் தேர்ந்தெடுக்காத பொம்மைகளின் தொகுப்பை உருவாக்குகின்றன.

இந்தக் கண்ணோட்டத்தில், "ஏற்கனவே இருக்கும் பொம்மைகளின்" தொகுப்பில் உள்ள பொம்மைகளின் வரிசை ஒரு பொருட்டல்ல என்பதையும், பிறந்தநாள் சிறுவனுக்கு ஒரு குறிப்பிட்ட பொம்மையின் இரண்டு நிகழ்வுகள் இருந்தால் அது ஒரு பொருட்டல்ல என்பதையும் நீங்கள் காணலாம். ஒவ்வொரு பொம்மையின் வரிசை அல்லது எண்ணில் நீங்கள் ஆர்வம் காட்டவில்லை. தொகுப்பில் இருக்கும் ஒவ்வொரு தனிப்பட்ட பொம்மையையும் தெரிந்துகொள்வதில் நீங்கள் அக்கறை காட்டுகிறீர்கள்.

இதுபோன்ற நிகழ்வுகளுக்கு, உங்களுக்கு Setசேகரிப்பு தேவை. அதன் மிகவும் பிரபலமான செயல்படுத்தல் HashSetவகுப்பு ஆகும்.