CodeGym /Java Blog /சீரற்ற /ஜாவாவில் சப்லிஸ்ட்() முறை: வரிசைப்பட்டியல் மற்றும் பட்டிய...
John Squirrels
நிலை 41
San Francisco

ஜாவாவில் சப்லிஸ்ட்() முறை: வரிசைப்பட்டியல் மற்றும் பட்டியல்

சீரற்ற குழுவில் வெளியிடப்பட்டது

துணைப்பட்டியல்() முறை என்றால் என்ன?

ஜாவா ஏபிஐயில் கலெக்ஷன் ஃப்ரேம்வொர்க் மிகவும் பிரபலமான அங்கமாகும். பட்டியல் இடைமுகம் மற்றும் ArrayList வகுப்பு ஆகியவை சேகரிப்பு கட்டமைப்பில் மிக முக்கியமான கருவிகளாக இருக்கலாம். subList என்பது பட்டியல் இடைமுகத்தில் உள்ள ஒரு முறையாகும், இது ஏற்கனவே உள்ள பட்டியலில் இருந்து ஒரு புதிய பட்டியலை உருவாக்க உங்களை அனுமதிக்கிறது. இருப்பினும், புதிதாக உருவாக்கப்பட்ட இந்தப் பட்டியல் அசல் பட்டியலின் குறிப்புடன் கூடிய பார்வை மட்டுமே. ஜாவாவில் சப்லிஸ்ட்() முறை: வரிசைப்பட்டியல் மற்றும் பட்டியல் - 1உதாரணமாக [1,2,3,4,5,6] பட்டியலை எடுத்துக் கொள்ளுங்கள். முதல் மற்றும் கடைசி கூறுகள் இல்லாமல் புதிய பட்டியலை உருவாக்க விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம். அத்தகைய சூழ்நிலையில், list.subList() முறை உங்களுக்கு உதவும். subList(fromIndex, toIndex) முறை ஒரே ஒரு படிவத்தைக் கொண்டுள்ளது மற்றும் இது இரண்டு வாதங்களை எடுக்கும், அவை முதல் குறியீட்டு (இன்டெக்ஸில் இருந்து) மற்றும் கடைசி குறியீட்டு(குறியீட்டுக்கு) . இது fromIndex மற்றும் toIndex இடையே உள்ள பகுதியை புதிய பட்டியலாகவழங்கும்நினைவில் கொள்ள வேண்டிய முக்கியமான விஷயம் உள்ளது. புதிதாக உருவாக்கப்பட்ட பட்டியலில் fromIndex மற்றும் toIndexஐ விலக்கும். எனவே மேலே உள்ள காட்சிக்கான அல்காரிதம் இப்படி இருக்கும். பட்டியல் = [1,2,3,4,5,6] newList = List.subList(1,5) subList என்பது பட்டியல் இடைமுகத்தின் ஒரு முறை என்பதால், நீங்கள் அதை ArrayList, LinkedList, Stack மற்றும் Vector objects இல் பயன்படுத்தலாம். இருப்பினும், இந்தக் கட்டுரையில், நாம் முக்கியமாக ArrayList மற்றும் LinkedList பொருள்களில் கவனம் செலுத்துவோம்.

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

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

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
         // create an ArrayList 
        ArrayList list = new ArrayList();
         // add values to ArrayList
         list.add("USA");
         list.add("UK");
         list.add("France");
         list.add("Germany");
         list.add("Russia");
        System.out.println("List of the countries:" + list);
         //Return the subList : 1 inclusive and 3 exclusive
        ArrayList new_list = new  ArrayList(list.subList(1, 3));
        System.out.println("The subList of the list: "+new_list);
    }
 }
மேலே உள்ள குறியீட்டின் வெளியீடு இருக்கும்
நாடுகளின் பட்டியல்:[அமெரிக்கா, யுகே, பிரான்ஸ், ஜெர்மனி, ரஷ்யா] பட்டியலின் துணைப்பட்டியல்: [யுகே, பிரான்ஸ்]
ஒரு ArrayList இல், முதல் தனிமத்தின் குறியீட்டு மதிப்பு 0. எனவே, இரண்டாவது மற்றும் நான்காவது உறுப்புகளின் குறியீட்டு மதிப்புகள் முறையே 1 மற்றும் 3 ஆகும். எனவே, sublist() முறையை list.subList(1, 3) ஆக அழைக்கிறோம் . இருப்பினும், இந்த வழக்கில் நான்காவது உறுப்பாக ("ஜெர்மனி") உள்ள இண்டெக்ஸைத் தவிர்த்து, துணைப்பட்டியல் முறையானது பகுதியை வழங்குகிறது என்பதை நினைவில் கொள்ளவும் . எனவே இது "யுகே" மற்றும் "பிரான்ஸ்" ஆகியவற்றை மட்டுமே வெளியிடும் . திரும்பிய வெளியீடு ஒரு பட்டியலாக இருப்பதால், நீங்கள் எந்த பட்டியல் முறைகளையும் நேரடியாக அதில் அழைக்கலாம். இரண்டு அளவுருக்களுக்கும் ஒரே குறியீட்டைப் பயன்படுத்தினால் என்ன நடக்கும்? திரும்பிய பட்டியலில் அந்த குறியீடு சேர்க்கப்படுமா அல்லது விலக்கப்படுமா? நாம் கண்டுபிடிக்கலாம்.

//execute subList() method with the same argument for both parameters.
ArrayList new_list2 = new ArrayList(list.subList(3, 3));
System.out.println("The subList of the list: "+new_list2);
வெளியீடு ஆகும்
பட்டியலின் துணைப்பட்டியல்: [ ]
வெளியீடு வெற்று பட்டியல். fromIndex 4வது உறுப்பைத் தேர்ந்தெடுத்தாலும், subList() முறையானது அதுவும் இன்டெக்ஸ் ஆக இருப்பதால் அதை நீக்கிவிடும்.

லிங்க்ட்லிஸ்ட் பொருளின் துணைப்பட்டியல் முறையின் எடுத்துக்காட்டு.

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

import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;
 
public class Main {
 
 public static void main(String[] args) {
 
    // Create a LinkedList
    LinkedList linkedlist = new LinkedList();
 
    // Add elements to LinkedList
    for(int i = 0; i<7; i++){
      linkedlist.add("Node "+ (i+1));
    }
 
    // Displaying LinkedList elements
    System.out.println("Elements of the LinkedList:");
    Iterator it= linkedlist.iterator();
    while(it.hasNext()){
       System.out.print(it.next()+ " ");
    }
 
    // invoke subList() method on the linkedList
    List sublist = linkedlist.subList(2,5);
 
    // Displaying SubList elements
    System.out.println("\nElements of the sublist:");
    Iterator subit= sublist.iterator();
    while(subit.hasNext()){
       System.out.print(subit.next()+" ");
    }
 
    /* The changes you made to the sublist will affect the     original LinkedList
     * Let’s take this example - We
     * will remove the element "Node 4" from the sublist.
     * Then we will print the original LinkedList. 
     * Node 4 will not be in the original LinkedList too. 
     */
    sublist.remove("Node 4");
    System.out.println("\nElements of the LinkedList LinkedList After removing Node 4:");
    Iterator it2= linkedlist.iterator();
    while(it2.hasNext()){
       System.out.print(it2.next()+" ");
    }
 }
}
வெளியீடு இப்படி இருக்கும்:
இணைக்கப்பட்ட பட்டியலின் கூறுகள்: முனை 1 முனை 2 முனை 3 முனை 4 முனை 5 முனை 6 முனை 7 துணைப்பட்டியலின் கூறுகள்: முனை 3 முனை 4 முனை 5 இணைப்புப்பட்டியலின் கூறுகள் இணைக்கப்பட்டப்பட்டியலின் முனை 4 ஐ அகற்றிய பின்: முனை 1 முனை 2 முனை 36 முனை 5 முனை முனை 7

துணைப்பட்டியலில் () குறியீடுகள் வரம்பிற்கு வெளியே இருந்தால் என்ன நடக்கும்?

துணைப்பட்டியல் முறை இரண்டு வகையான விதிவிலக்குகளை வழங்குகிறது . அவற்றைப் பற்றிப் பார்ப்போம். குறிப்பிட்ட குறியீடுகள் பட்டியல் உறுப்பின் வரம்பிற்கு வெளியே இருந்தால் (இன்டெக்ஸ் < 0 || முதல் இண்டெக்ஸ் > அளவு வரை) ஒரு சூழ்நிலையைக் கவனியுங்கள் . பின்னர் அது ஒரு IndexOutOfBoundExection ஐ வீசும் .

//using subList() method with fromIndex <0 
ArrayList new_list2 = new ArrayList(list.subList(-1, 3));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IndexOutOfBoundsException: fromIndex = -1
 
// using subList() method with toIndex > size
ArrayList new_list2 = new ArrayList(list.subList(3, 6));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IndexOutOfBoundsException: toIndex = 6
மேலும், fromIndex toIndex ஐ விட அதிகமாக இருந்தால் (FromIndex > toIndex) , subList() முறை ஒரு IllegalArgumentException பிழையை ஏற்படுத்துகிறது .

//If fromIndex > toIndex
ArrayList new_list2 = new ArrayList(list.subList(5, 3));
System.out.println("Portion of the list: "+new_list2);
 
Exception in thread "main" java.lang.IllegalArgumentException: fromIndex(5) > toIndex(3)

முடிவுரை

இந்த கட்டுரையில், துணைப்பட்டியல் முறை மற்றும் அதை எவ்வாறு பயன்படுத்துவது என்பது பற்றி நாங்கள் விவாதித்தோம். subList() முறை வெளிப்படையான வரம்பு செயல்பாடுகளின் தேவையை நீக்குகிறது (இது அணிகளுக்கு பொதுவாக இருக்கும் செயல்பாடுகளின் வகை). நினைவில் கொள்ள வேண்டிய மிக முக்கியமான விஷயம் என்னவென்றால், துணைப்பட்டியல் முறையானது புதிய நிகழ்வை வழங்காது, ஆனால் அசல் பட்டியலைக் குறிக்கும் பார்வை. எனவே, அதே பட்டியலில் உள்ள துணைப்பட்டியல் முறையை அதிகமாகப் பயன்படுத்தினால், உங்கள் ஜாவா பயன்பாட்டில் ஒரு நூல் சிக்கியிருக்கலாம்.
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION