code: public static <T> List<List<T>> permutations(List<T> list) {
          if (list == null || list.isEmpty()) {
              return Collections.emptyList();
          }
          long size = MathUtil.factorial(list.size());
          if (size > Integer.MAX_VALUE) {
              throw new OutOfMemoryError("全排列结果集大小为[" + size + "]，超过数组能容纳的最大结果");
          }
          List<List<T>> result = new ArrayList<>((int) size);
          permutations(result, list, 0);
          return result;
      }
docs: 将集合中的数据全排列
  
  @param list 集合数据
  @param <T>  数据类型
  @return 全排列结果，例如传入[1,2]，返回[[1,2], [2,1]]