సబ్లిస్ట్() పద్ధతి అంటే ఏమిటి?
జావా APIలో కలెక్షన్స్ ఫ్రేమ్వర్క్ చాలా ప్రజాదరణ పొందిన భాగం. జాబితా ఇంటర్ఫేస్ మరియు అర్రేలిస్ట్ క్లాస్ బహుశా కలెక్షన్స్ ఫ్రేమ్వర్క్లో అత్యంత ముఖ్యమైన సాధనాలు. సబ్లిస్ట్ అనేది జాబితా ఇంటర్ఫేస్లోని ఒక పద్ధతి, ఇది ఇప్పటికే ఉన్న జాబితాలోని భాగం నుండి కొత్త జాబితాను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. అయితే, ఈ కొత్తగా సృష్టించబడిన జాబితా అసలు జాబితాకు సూచనతో వీక్షణ మాత్రమే. ఉదాహరణకు [1,2,3,4,5,6] జాబితాను తీసుకోండి. మీరు మొదటి మరియు చివరి అంశాలు లేకుండా కొత్త జాబితాను సృష్టించాలనుకుంటున్నారని అనుకుందాం. అటువంటి దృష్టాంతంలో, list.subList() పద్ధతి మీకు సహాయం చేస్తుంది. సబ్లిస్ట్(ఇండెక్స్ నుండి, ఇండెక్స్ నుండి) పద్ధతికి ఒకే ఒక ఫారమ్ ఉంటుంది మరియు ఇది రెండు ఆర్గ్యుమెంట్లను తీసుకుంటుంది, అవి మొదటి సూచిక (ఇండెక్స్ నుండి) మరియు చివరి సూచిక .(ఇండెక్స్కి) . ఇది fromIndex మరియు toIndex మధ్య భాగాన్ని కొత్త జాబితాగాఅందిస్తుందిగుర్తుంచుకోవలసిన ముఖ్యమైన అంశం ఉంది. కొత్తగా సృష్టించబడిన జాబితాలో fromIndex మరియు toIndex మినహాయించబడుతుంది. కాబట్టి పై దృష్టాంతం కోసం అల్గోరిథం ఇలా ఉంటుంది. జాబితా = [1,2,3,4,5,6] newList = List.subList(1,5) సబ్లిస్ట్ అనేది జాబితా ఇంటర్ఫేస్ యొక్క పద్ధతికాబట్టిఅయితే, ఈ కథనంలో, మేము ప్రధానంగా అర్రేలిస్ట్ మరియు లింక్డ్లిస్ట్ వస్తువులపై దృష్టి పెడతాము.అర్రేలిస్ట్ ఆబ్జెక్ట్లో సబ్లిస్ట్ పద్ధతికి ఉదాహరణ.
మేము దేశాల శ్రేణి జాబితాను ప్రకటిస్తున్నాము. అప్పుడు మేము 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);
}
}
పై కోడ్ యొక్క అవుట్పుట్ ఉంటుంది
దేశాల జాబితా:[USA, UK, ఫ్రాన్స్, జర్మనీ, రష్యా] జాబితా యొక్క ఉపజాబితా: [UK, ఫ్రాన్స్]
అర్రేలిస్ట్లో, మొదటి మూలకం యొక్క సూచిక విలువ 0. కాబట్టి, రెండవ మరియు నాల్గవ మూలకాల యొక్క సూచిక విలువలు వరుసగా 1 మరియు 3గా ఉంటాయి. కాబట్టి, మేము sublist() పద్ధతిని list.subList(1, 3) గా పిలుస్తాము . ఏదేమైనప్పటికీ, ఈ సందర్భంలో నాల్గవ మూలకం ("జర్మనీ") అయిన toIndexని మినహాయించి సబ్లిస్ట్ పద్ధతి భాగాన్ని తిరిగి ఇస్తుంది . అందువలన ఇది "UK" మరియు "ఫ్రాన్స్" మాత్రమే అవుట్పుట్ చేస్తుంది . తిరిగి వచ్చిన అవుట్పుట్ జాబితా అయినందున, మీరు దానిపై నేరుగా ఏదైనా జాబితా పద్ధతులకు కాల్ చేయవచ్చు. కాబట్టి మనం రెండు పారామితులకు ఒకే సూచికను ఉపయోగిస్తే ఏమి జరుగుతుంది? తిరిగి వచ్చిన జాబితాలో ఆ సూచిక చేర్చబడుతుందా లేదా మినహాయించబడుతుందా? తెలుసుకుందాం.
//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() పద్ధతి అది కూడా toIndex అయినందున దానిని తీసివేస్తుంది.
లింక్డ్లిస్ట్ ఆబ్జెక్ట్లో సబ్లిస్ట్ పద్ధతికి ఉదాహరణ.
ఈ ఉదాహరణలో, మేము లింక్డ్లిస్ట్ ఎలిమెంట్లో సబ్లిస్ట్ పద్ధతిని ఉపయోగిస్తాము. మళ్ళీ, ఇది ఇండెక్స్(ఇన్క్లూజివ్) మరియు ఇండెక్స్(ప్రత్యేకమైనది) నుండి పేర్కొన్న ఇండెక్స్ మధ్య జాబితాను అందిస్తుంది . సబ్లిస్ట్() పద్ధతి ద్వారా అందించబడిన జాబితా అసలు జాబితాకు సూచనగా ఉన్న వీక్షణ మాత్రమే అని మేము చెప్పామని గుర్తుంచుకోండి. మీరు సబ్లిస్ట్లో ఏవైనా మార్పులు చేస్తే, అది అసలైన జాబితాపై కూడా ప్రభావం చూపుతుంది. మేము ఈ ఉదాహరణలో కూడా పరీక్షిస్తాము.
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 నోడ్ 3 6 నోడ్ 5 నోడ్ నోడ్ 7
సబ్లిస్ట్()లో సూచికలు పరిమితికి మించి ఉంటే ఏమి జరుగుతుంది?
సబ్లిస్ట్ పద్ధతి రెండు రకాల మినహాయింపులను అందిస్తుంది . వాటిని ఒకసారి చూద్దాం. పేర్కొన్న సూచికలు జాబితా మూలకం (ఇండెక్స్ నుండి < 0 || నుండి ఇండెక్స్ > పరిమాణం) పరిధికి మించి ఉన్నట్లయితే పరిస్థితిని పరిగణించండి . అప్పుడు అది IndexOutOfBoundExeption ని విసురుతుంది .
//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() పద్ధతి చట్టవిరుద్ధమైన వాదన మినహాయింపు లోపాన్ని విసురుతుంది .
//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)
GO TO FULL VERSION