java - 字符串数组排列组合并返回list

package com.test.test.order.tools;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 将字符数组排列组合,生成list返回
 */
public class Arrange {
    private List<String> strList;

    public Arrange(String[] strArr){
        strList = new ArrayList<>();
        strList.addAll(Arrays.asList(strArr));
        Iterator<String> strListIter = strList.iterator();
        while (strListIter.hasNext()) {
            String str = strListIter.next();
            if (StringUtils.isEmpty(StringUtils.replaceSpace(str)))
                strListIter.remove();
        }
    }

    public List<String> getStrList(){
        return strList;
    }

    public void invok(String[] strArr, int start, int len){
        if(start == len-1){
            String str = "";
            for(int i=0; i<strArr.length; ++i)
                str+=strArr[i];
            if (!strList.contains(str)) strList.add(str);
            return;
        }
        for(int i=start; i<len; i++){
            String temp = strArr[start];
            strArr[start] = strArr[i];
            strArr[i] = temp;
            invok(strArr, start+1, len);
            temp = strArr[start];
            strArr[start] = strArr[i];
            strArr[i] = temp;
        }
    }



    /*public static void main(String[] args) {
        String key = "北京  中国  建设银行";
        String[] strArr = key.split(" ");
        Arrange a = new Arrange(strArr);
        a.invok(strArr, 0, strArr.length);
        System.out.println(a.getStrList());
    }*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值