组合值


package y2ssh.sg.test;

import java.io.Serializable;

public class AllTests {

public static void main(String[] args) {
AllTests test = new AllTests();
List list = new ArrayList();
//list.add("1111");

list.add("1101");
list.add("1100");

list.add("1011");
list.add("1010");
list.add("1001");
list.add("1000");
list.add("1110");

String in = "1111"; // 输入

String rst = "";

List flist = test.filterZero(in, list);
if (flist != null && !flist.isEmpty()) {
rst = test.filterOne(in, flist);
System.out.println("选择的结果为:" + rst);
} else {
System.out.println("没有找到记录!");
}
}

/**
* 过滤零
*/
public List filterZero(String in, List list) {
char[] ch = in.toCharArray();
List ls = list;
for (int i = 1; i < ch.length; i++) {
List rntList = new ArrayList();
if (ch[i] == '0') {// 逐位过滤
rntList = filterZeroList(i, ls); // 结果list
if (rntList == null || rntList.isEmpty()) { // 没有找到1的记录,默认置0
ls = null;
break;
}
ls = rntList;
}
}
return ls;
}

/**
* 按0逐位过滤原List
*
* @param indx
* @param list
* @return
*/
private List filterZeroList(int indx, List list) {
List rList = new ArrayList();
for (Object obj : list) {
String str = (String) obj;
char ch = str.charAt(indx);
if (ch == '0') {
rList.add(str);
}
}
return rList;
}

/**
* 过滤1
*
* @param in
* @param flist
* @return
*/
public String filterOne(String in, List flist) {
char[] ch = in.toCharArray();
List ls = flist;
for (int i = 1; i < ch.length; i++) { // 从第二位开始
List rntList = new ArrayList();
if (ch[i] == '1') {// 逐位过滤
rntList = filterOneList(i, ls); // 根据具体位置,得到结果list
if (rntList == null || rntList.isEmpty()) { // 没有找到1的记录,默认置0
ls = filterZeroList(i, ls);
} else {
ls = rntList;
}
}
}
return ls.get(0).toString();
}

/**
* 按1逐位过滤原List
*
* @param i
* @param ls
* @return
*/
private List filterOneList(int indx, List ls) {
List rList = new ArrayList();
for (Object obj : ls) {
String str = (String) obj;
char ch = str.charAt(indx);
if (ch == '1') {
rList.add(str);
}
}
return rList;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值