code: public static <T1, T2> List<Tuple2<T1, T2>> zip(Collection<T1> col1, Collection<T2> col2) {
          int resultSize = _max(col1.size(), col2.size());
          List<Tuple2<T1, T2>> result = new ArrayList<Tuple2<T1, T2>>(resultSize);
  
          Iterator<T1> it1 = col1.iterator();
          Iterator<T2> it2 = col2.iterator();
  
          while (resultSize-- > 0) {
              result.add(tuple(next(it1), next(it2)));
          }
  
          return result;
      }
docs: Zips a number of collections into one list of tuples
  
  @return zipped list