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

"அரேலிஸ்ட் சேகரிப்பில் இருந்து தொடங்குகிறேன்."

"இந்த சேகரிப்பின் பரம்பரை வரைபடம் எப்படி இருக்கிறது:"

"இடைமுகங்கள் பச்சை நிறத்தில் உள்ளன."

"சுருக்க வகுப்புகள் ஊதா நிறத்தில் உள்ளன."

"சாதாரண வகுப்புகள் சிவப்பு."

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

"இது எளிமையான சேகரிப்பு. வரிசைப்பட்டியலின் உள்ளே , கூறுகள் எளிய வரிசையில் சேமிக்கப்படும்."

"ஒரு வரிசையை விட இந்த சேகரிப்பின் முதன்மையான நன்மை விரிவடையும் திறன் ஆகும், அதாவது தேவைக்கேற்ப அதன் நீளத்தை அதிகரிக்கும் திறன் ஆகும்."

"அரேயில் இடம் இல்லாமல் போனால், இரண்டாவது பெரிய வரிசை உருவாக்கப்பட்டு, முதல் வரிசையில் உள்ள அனைத்து கூறுகளும் அதற்கு நகலெடுக்கப்படும். பின்னர் இரண்டாவது வரிசை முதல் இடத்தைப் பிடிக்கும், மேலும் முதல் வரிசை நிராகரிக்கப்படும் (அது இருக்கும் குப்பை சேகரிப்பாளரால் அழிக்கப்பட்டது).

"வரிசை எவ்வளவு பெரியது?"

"புதிய அணிவரிசையின் நீளம் (3*n)/2+1 என கணக்கிடப்படுகிறது, இங்கு n என்பது பழைய வரிசையின் நீளம். வேறுவிதமாகக் கூறினால், பழைய அணிவரிசை 100 உறுப்புகள் நீளமாக இருந்தால், புதியது 300/2+1 ஆக இருக்கும். = 151."

"வரிசைப்பட்டியலின் நடுவில் ஒரு உறுப்பைச் சேர்க்கும் போது, ​​புதிய உறுப்பு செருகப்படும் இடத்தின் வலதுபுறத்தில் உள்ள அனைத்து உறுப்புகளும் வலதுபுறமாக 1 நிலை நகலெடுக்கப்படும், பின்னர் புதிய உறுப்பு காலியான கலத்தில் சேர்க்கப்படும்."

"நடுவில் இருந்து ஒரு உறுப்பை அகற்றும் போது, ​​அந்த உறுப்பின் வலதுபுறத்தில் உள்ள அனைத்து உறுப்புகளும் இடதுபுறமாக 1 நிலையில் நகலெடுக்கப்படும்."

"நீங்கள் கூறுகளைச் சேர்க்கும் போது, ​​வரிசைப்பட்டியல் தன்னை நீளமாக்குகிறது என்றும், நீங்கள் உறுப்புகளை அகற்றும்போது அது தன்னைத்தானே சுருக்கிக் கொள்கிறது என்றும் நீங்கள் கூறுகிறீர்களா?"

"இல்லை, வரிசைப்பட்டியலின் உள்ளே இருக்கும் வரிசை தன்னைத்தானே குறுக்கிக் கொள்ளாது; இருப்பினும், trimToSize () முறையை அழைப்பதன் மூலம் அதன் உள் அணிவரிசையை மிகச்சிறிய அளவிற்கு சுருக்குமாறு நீங்கள் கட்டாயப்படுத்தலாம் ."

"நிச்சயமாக, லிங்க்டுலிஸ்ட் பற்றி நான் உங்களுக்குச் சொல்கிறேன்."

"இங்கே அதன் பரம்பரை வரைபடம் எப்படி இருக்கிறது:"

"இடைமுகங்கள் பச்சை நிறத்தில் உள்ளன."

"சுருக்க வகுப்புகள் ஊதா நிறத்தில் உள்ளன."

"சாதாரண வகுப்புகள் சிவப்பு."

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

"உங்களுக்கு ஏற்கனவே தெரியும், LinkedList உறுப்புகளை இணைக்கப்பட்ட பட்டியலாக சேமிக்கிறது."

"நான் அதை எப்போதும் கேட்கிறேன், ஆனால் அது என்னவென்று சொல்ல முடியுமா?"

"நிச்சயமாக. "இது எளிது."

"ஒரு இணைக்கப்பட்ட பட்டியலில் அ) தரவுகளை சேமிக்கும் மற்றும் b) அடுத்த மற்றும் முந்தைய கூறுகளுக்கான குறிப்புகளை சேமிக்கும் கூறுகள் உள்ளன ."

" சரங்களைச் சேமித்து வைத்தால், அத்தகைய உறுப்புக்கான வகுப்பு இப்படித்தான் இருக்கும்:"

உதாரணமாக விளக்கம்
class LinkedListElement
{
String data;
LinkedListElement next;
LinkedListElement previous;
}
தரவுப் புலமானது உறுப்பின் சர மதிப்பைச் சேமிக்கிறது.
அடுத்த புலம் பட்டியலில் உள்ள அடுத்த உறுப்புக்கான குறிப்பைச் சேமிக்கிறது. முந்தைய புலம் பட்டியலில் உள்ள முந்தைய
உறுப்புக்கான குறிப்பைச் சேமிக்கிறது .

"நாம் ஒரு பொதுவான வகை அறிவிப்பைப் பயன்படுத்தினால், அது இப்படி இருக்கும்:"

பொதுவான வகை அறிவிப்புடன் இணைக்கப்பட்ட பட்டியல் உறுப்புக்கான வகுப்பு
class LinkedListElement<T>
{
 T data;
 LinkedListElement<T> next;
 LinkedListElement<T> previous;
}

"அர்த்தமுள்ளதாக."

"இதை நன்றாகப் புரிந்து கொள்ள, இருமுறை இணைக்கப்பட்ட பட்டியலில் 10 கூறுகளைச் சேர்க்கும் குறியீட்டை எழுதுவோம்:"

உதாரணமாக
public static void main(String[] args)
{
 LinkedListElement<Integer> tail; // The tail (very last element) of the list

 for(int i = 0; i < 10; i++)
 {
  LinkedListElement<Integer> element = new LinkedListElement<Integer>();
  element.data = i;

  if (tail == null) // If the tail doesn't exist, then make our element the last element
  {
   tail = element;
  }
  else // if there is a tail, add the element
  {
   tail.next = element; // Set the next field on the tail element
   element.previous = tail; // Add a reference to the tail to the new element
   tail = element; // Make the new element the tail
  }
 }
}

"பட்டியலில் 10 கூறுகள் உள்ளன என்று கற்பனை செய்து பாருங்கள். நடுவில் ஒரு உறுப்பை எவ்வாறு செருகுவது என்பது இங்கே:"

பட்டியல் இடைமுகத்தின் செயலாக்கங்கள் - 3

"மாற்றப்பட்ட இணைப்புகள் பிரகாசமான சிவப்பு நிறத்தில் காட்டப்பட்டுள்ளன . அவை இப்போது புதிய உறுப்பைச் சுட்டிக்காட்டுகின்றன."

"புதிய இணைப்புகள் பிரகாசமான ஊதா நிறத்தில் சிறப்பிக்கப்பட்டுள்ளன . அவை அண்டை நாடுகளுக்கான புதிய உறுப்புகளின் இணைப்புகளாகும்."

"இப்போது குறியீடாக:"

இணைக்கப்பட்ட பட்டியலின் நடுவில் ஒரு உறுப்பைச் செருகவும்
// This field stores the element that is the head of the list
LinkedListElement<Integer> head =// Get the 4th element (counting from zero)
LinkedListElement<Integer> element4 = head.next.next.next.next;
// Get the 5th element
LinkedListElement<Integer> element5 = element4.next;

// Create the new element that we will insert
LinkedListElement<Integer> newElement = new LinkedListElement<Integer>();
newElement.data = -18;

// Replace the references in the element on the left
newElement.previous = element4;
element4.next = newElement;

// Replace the references in the element on the right
newElement.next = element5;
element5.previous = newElement;

"நன்றி, எல்லி. நான் நிச்சயமாக பட்டியல்களைப் பற்றி நிறைய புதிய விஷயங்களைக் கற்றுக்கொண்டேன்."