Search code examples
javaarraysarraylistmultidimensional-arraytyped-arrays

How to pass multiple array lists as a parameter in a method in java?


How do I also pass the arraylist 'end' as a parameter inside the begin method along with the 'start' arraylist?

List<String> start = new ArrayList<String>();
List<String> end = new ArrayList<String>(); 

public static void begin(List<String> start)
{

}

Solution

  • While multiple parameters is definitely the recommended way to do it, there are a few alternative non-recommended ways to achieve this as well. Enjoy!

    import java.util.List;
    
    public class ParameterListTest {
    
      public static void main(String[] args) {
        List<String> startList = List.of("Value1", "Value2");
        List<String> endList = List.of("Value3", "Value4"); 
        
        //Recommended way
        version1(startList, endList);
        
        //Goofy alternatives
        version2(startList, endList);
        
        List<String>[] listArray = new List[]{startList, endList};
        version3(listArray);
        
        List<List<String>> nestedList = List.of(startList, endList);
        version4(nestedList);
      }
      
      public static void version1(List<String> start, List<String> end) {
        System.out.println("Version 1");
        System.out.println(start);
        System.out.println(end);
        System.out.println();
      }
      
      public static void version2(List<String>...lists) {
        System.out.println("Version 2");
        System.out.println(lists[0]);
        System.out.println(lists[1]);
        System.out.println();
      }
      
      public static void version3(List<String>[] lists) {
        System.out.println("Version 3");
        System.out.println(lists[0]);
        System.out.println(lists[1]);
        System.out.println();
      }
      
      public static void version4(List<List<String>> nest) {
        System.out.println("Version 4");
        System.out.println(nest.get(0));
        System.out.println(nest.get(1));
        System.out.println();
      }
    }