import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

public class Test{

 private static String[] s = new String[]{"a","b","a"};

 private static int l = s.length;

 private static Set<String> set = new HashSet<String>();

 public static void main(String[] args) {

  List<String> source = Arrays.asList(s);

  List<String> target = new ArrayList<String>();

  sort(source,target);

  Iterator<String> it = set.iterator();

  while(it.hasNext()){

   System.out.println(it.next());

  }

 }

 private static void sort(List<String> source, List<String> target) {

  if(target.size() == l){

   set.add(target.toString().replaceAll(",", "").replace("[", "").replace("]", "").replace(" ", ""));

  }

  for(int i=0;i<source.size();i++){

   List<String> targetList = new ArrayList<String>(target);

   targetList.add(source.get(i));

   List<String> resourceList = new ArrayList<String>(source);

   resourceList.remove(i);

   sort(resourceList,targetList);

  }

 }

}

Java递归实现全排列改进(一)---利用HashSet实现去重的更多相关文章

  1. JAVA递归实现全排列

    全排列(permutation) 排列组合概念 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序 全排列 以数字为例 ...

  2. Java用递归实现全排列,详细

    package edu.cqu.algorithmTest; import java.util.Scanner; // 全排列,递归实现 public class Main8 { public sta ...

  3. JAVA递归实现线索化二叉树

    JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...

  4. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  5. JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯

    分布式开发的历史 利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用 ...

  6. Java在的时候,类定义HashSet初始化方法

    Java非常多的时间,应使用HashSet搜索功能,类的则定义,是HashSet类型的,我们定义数据成员之后,不好直接调用add函数来实现初始化,这个时候怎么办? 我们能够这样来做: public s ...

  7. Java集合概述、Set集合(HashSet类、LinkedHashSet类、TreeSet类、EnumSet类)

    Java集合概述.Set集合(HashSet类.LinkedHashSet类.TreeSet类.EnumSet类) 1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指 ...

  8. Java 递归调用 recursive 给一个参数 返回一大堆

    需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...

  9. JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习

    JAVA之旅(二十)-HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定 ...

  10. JAVA 递归实现从n个数中选取m个数的所有组合

    这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...

随机推荐

  1. 2022 多益网络hr面

    不知道为啥 我的一面是hr面试,面试官是一个小姐姐,整个面试过程还是比较轻松的 废话不多说,直接上题目 自我介绍(巴拉巴拉巴拉...) 有参与过什么团队协作项目吗,担任了一个什么样的角色,怎么分配任务 ...

  2. 案例:推进GTID解决MySQL主主不同步问题

    之前文章介绍过MySQL修改lower_case_table_names参数,如果之前大写存储的表将无法识别,需要特殊处理. 最近遇到一例应用开发人员在修改这个参数之后,为了清除之前大写存储的表,做了 ...

  3. delphi 调试 原来可以这样 复制,不用点开 才能复制 对象的值

  4. 使用mail发送邮件

    使用mail发送邮件 ​ 只做个简单介绍,使用场景不多 1.安装mail yum install mailx -y 2.配置 ​ 1)配置文件在/etc/mail.rc,有兴趣的可以仔细读一下默认的配 ...

  5. JOISC 2021 记录

    Day1 T1 Aerobatics 神秘的提交答案题. Day1 T2 IOI 熱の感染拡大 我们可以通过移动+旋转坐标系,使得第 1 个宫殿在 \((0,0)\) 处,且方向为 \(x\) 轴正方 ...

  6. Java中“==”与equals()

    1 前言 1.1 内存分区 Java中有6种存储区域(参考Java的六大存储区域),如下: 寄存器(register):位于处理器内部,处理速度最快,空间比较珍贵: 栈(stack):位于通用RAM中 ...

  7. Js中的堆栈

    Js中的堆栈 堆heap是动态分配的内存,大小不定也不会自动释放,栈stack为自动分配的内存空间,在代码执行过程中自动释放. 栈区 在栈内存中提供一个供Js代码执行的环境,关于作用域以及函数的调用都 ...

  8. Typora关于 插入图片 居中 靠左 靠右设置

    style="float: left;" <img src="C:\Users\mlx\AppData\Roaming\Typora\typora-user-ima ...

  9. [Android 逆向]旅行青蛙破解

    1. 旅行青蛙V1.0,4 apk 安装到手机,可以运行 2. jadx 打开apk 存在这两个dll ,说明是 unity开发的 3. 导出Assembly-CSharp.dll, 使用DnSpy ...

  10. 小程序threejs参考

    之前做了一个小程序眼镜试戴的功能,涉及了人脸识别和3D模型渲染等.暂时记录一些参考的东西,有时间再整理. threejs官方文档(一定要看看) https://threejs.org/docs/ind ...