code: public static <T> void permutations(List<List<T>> result, List<T> args, int index) {
          if (index == args.size() - 2) {
              List<T> temp1 = new ArrayList<>(args.size());
              temp1.addAll(args);
              Collections.swap(temp1, index, index + 1);
              result.add(temp1);
              List<T> temp2 = new ArrayList<>(args.size());
              temp2.addAll(args);
              result.add(temp2);
              return;
          }
          permutations(result, args, index + 1);
          for (int i = index; i < args.size() - 1; i++) {
              List<T> temp = new ArrayList<>(args.size());
              temp.addAll(args);
              Collections.swap(temp, index, i + 1);
              permutations(result, temp, index + 1);
          }
      }
docs: 计算全排列
  
  @param result 全排列结果集
  @param args   要进行全排列的队列
  @param index  全排列开始位置，例如如果index等于3则表示从下标3位置开始往后的所有数据进行全排列
  @param <T>    要全排列的数据的类型