Could some one explain Collections.enumeration
public static void main(String[] args) throws IOException {
       String resultFile = args[0];
       List<String> zipFiles = new ArrayList<>();
       for (int i = 1; i < args.length; i++) {
           String FilePath = args[i];
           zipFiles.add(FilePath);
       }
       Collections.sort(zipFiles);

       // put all inputstream into list
       List<FileInputStream> list = new ArrayList<>();
       for (String s : zipFiles)
           list.add(new FileInputStream(s));


       //read each inputstream using zipinputstream read and write using fileoutputstream
       OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(resultFile));
       ZipInputStream zipInputStream = new ZipInputStream(new SequenceInputStream(Collections.enumeration(list)));

       for (ZipEntry entry = null; (entry = zipInputStream.getNextEntry()) != null; ) {
           byte[] buffer = new byte[1024];

           for (int readBytes = -1; (readBytes = zipInputStream.read(buffer, 0, buffer.length)) > -1; ) {
               outputStream.write(buffer, 0, readBytes);
           }
       }

       zipInputStream.close();
       outputStream.close();

   }