The indexOfSubList() method of java.util.Collections class is used to return the starting position of the first occurrence of the specified target list within the specified source list, or -1 if there is no such occurrence. More formally, returns the lowest index i such that source.subList(i, i+target.size()).equals(target), or -1 if there is no such index. (Returns -1 if target.size() > source.size().)
This implementation uses the “brute force” technique of scanning over the source list, looking for a match with the target at each location in turn.
Syntax:
public static int indexOfSubList(List source, List target)
Parameters: This method takes following argument as parameter
- source – the list in which to search for the first occurrence of target.
- target – the list to search for as a subList of source.
Return Value: This method returns the starting position of the first occurrence of the specified target list within the specified source list, or -1 if there is no such occurrence.
Below are the examples to illustrate the indexOfSubList() method
Example 1:
// Java program to demonstrate // indexOfSubList() method // for String value import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { // creating object of List<String> List<String> arrlistsrc = new ArrayList<String>(); List<String> arrlisttarget = new ArrayList<String>(); // Adding element to arrlistsrc arrlistsrc.add( "A" ); arrlistsrc.add( "B" ); arrlistsrc.add( "C" ); arrlistsrc.add( "D" ); arrlistsrc.add( "E" ); // Adding element to arrlisttarget arrlisttarget.add( "C" ); arrlisttarget.add( "D" ); arrlisttarget.add( "E" ); // print the source list System.out.println( "Source list: " + arrlistsrc); // print the target list System.out.println( "Target list: " + arrlisttarget); // check target list in source list int index = Collections .indexOfSubList(arrlistsrc, arrlisttarget); // print the index System.out.println( "Target list starts at index: " + index); } catch (IllegalArgumentException e) { System.out.println( "Exception thrown : " + e); } } } |
Source list: [A, B, C, D, E] Target list: [C, D, E] Target list starts at index: 2
Example 2:
// Java program to demonstrate // indexOfSubList() method // for Integer value import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { // creating object of List<Integer> List<Integer> arrlistsrc = new ArrayList<Integer>(); List<Integer> arrlisttarget = new ArrayList<Integer>(); // Adding element to arrlistsrc arrlistsrc.add( 20 ); arrlistsrc.add( 30 ); arrlistsrc.add( 40 ); arrlistsrc.add( 50 ); arrlistsrc.add( 60 ); // Adding element to arrlisttarget arrlisttarget.add( 40 ); arrlisttarget.add( 50 ); // print the source list System.out.println( "Source list: " + arrlistsrc); // print the target list System.out.println( "Target list: " + arrlisttarget); // check target list in source list int index = Collections .indexOfSubList(arrlistsrc, arrlisttarget); // print the index System.out.println( "Target list starts at index: " + index); } catch (IllegalArgumentException e) { System.out.println( "Exception thrown : " + e); } } } |
Source list: [20, 30, 40, 50, 60] Target list: [40, 50] Target list starts at index: 2