code: public static <T> List<T> innerJoin(List<List<T>> list, BiFunction<T, T, T> function) {
          if (list == null || function == null) {
              throw new NullPointerException("list or function must not be null");
          }
          if (list.isEmpty()) {
              return Collections.emptyList();
          }
          if (list.size() == 1) {
              return list.get(0);
          }
  
          List<List<T>> result = innerJoin(list.get(0), list.get(1), function);
          if (list.size() == 2) {
              return merge(result);
          } else {
              for (int i = 2; i < list.size(); i++) {
                  List<T> l1 = list.get(i);
                  List<List<T>> temp = new ArrayList<>();
                  result.stream().forEach(l -> temp.addAll(innerJoin(l, l1, function)));
                  result = temp;
              }
              return merge(result);
          }
      }
docs: 将多个数组内连接
  
  @param list     多个数组集合，不能为空
  @param function 连接函数，使用该函数连接，不能为空
  @param <T>      数组内数据类型
  @return 内连接结果，例如原数组为[[1,2],[3,4],[5,6]]，内连接结果为[135,136,145,146,235,236,245,246]