写了一个合并的,大家可以参考下

源码:

package cn.simple.test.list;

import java.util.ArrayList;
import java.util.List;

public class MergeTest {

    public static void main( String[] args ) {
	List<String> cityNamesList = new ArrayList<>(); // 城市
	List<String> functionNamesList = new ArrayList<>(); // 职能类别
	List<String> industryNamesList = new ArrayList<>(); // 行业类别
	cityNamesList.add( "c1" );
	cityNamesList.add( "c2" );
	functionNamesList.add( "dd" );
	industryNamesList.add( "i1" );
	industryNamesList.add( "i2" );

	System.out.println( cityNamesList );
	System.out.println( functionNamesList );
	System.out.println( industryNamesList );
	System.out.println( "-------------" );
	System.out.println( "-------------" );

	List<RequestBo> list = RequestBo.merge( cityNamesList, functionNamesList, industryNamesList );
	System.out.println( "num: " + list.size() );
	for ( RequestBo requestBo : list ) {
	    System.out.println( requestBo );
	}
    }

    private static class RequestBo implements Cloneable {
	public String cityNames;     //
	public String functionNames; //
	public String industryNames; //

	public static List<RequestBo> merge( List<String> cityNamesList, List<String> functionNamesList, List<String> industryNamesList ) {
	    List<RequestBo> list = new ArrayList<>();
	    List<RequestBo> temp = new ArrayList<>();
	    RequestBo one = new RequestBo();

	    List<RequestBo> citys = one.mergeCityNames( cityNamesList ); /** !!! */
	    list.addAll( citys );

	    for ( RequestBo bo : list ) {
		List<RequestBo> functions = bo.mergeFunctionNames( functionNamesList ); /** !!! */
		temp.addAll( functions );
	    }
	    list.clear();
	    list.addAll( temp );

	    temp.clear();
	    for ( RequestBo bo : list ) {
		List<RequestBo> functions = bo.mergeIndustryNames( industryNamesList ); /** !!! */
		temp.addAll( functions );
	    }
	    list.clear();
	    list.addAll( temp );

	    return list;
	}

	private List<RequestBo> mergeIndustryNames( List<String> industryNamesList ) {
	    List<RequestBo> list = new ArrayList<>();

	    list.add( this );

	    if ( isEmpty( industryNamesList ) ) {
		return list;
	    }

	    int size = industryNamesList.size();
	    this.industryNames = industryNamesList.get( 0 ); /** !!! */

	    for ( int i = 1; i < size; i++ ) {
		RequestBo bo = this.create();
		bo.industryNames = industryNamesList.get( i ); /** !!! */
		list.add( bo );
	    }

	    return list;
	}

	private List<RequestBo> mergeFunctionNames( List<String> functionNamesList ) {
	    List<RequestBo> list = new ArrayList<>();

	    list.add( this );

	    if ( isEmpty( functionNamesList ) ) {
		return list;
	    }

	    int size = functionNamesList.size();
	    this.functionNames = functionNamesList.get( 0 ); /** !!! */

	    for ( int i = 1; i < size; i++ ) {
		RequestBo bo = this.create();
		bo.functionNames = functionNamesList.get( i ); /** !!! */
		list.add( bo );
	    }

	    return list;
	}

	private List<RequestBo> mergeCityNames( List<String> cityNamesList ) {
	    List<RequestBo> list = new ArrayList<>();

	    list.add( this );

	    if ( isEmpty( cityNamesList ) ) {
		return list;
	    }

	    int size = cityNamesList.size();
	    this.cityNames = cityNamesList.get( 0 ); /** !!! */

	    for ( int i = 1; i < size; i++ ) {
		RequestBo bo = this.create();
		bo.cityNames = cityNamesList.get( i ); /** !!! */
		list.add( bo );
	    }

	    return list;
	}

	private RequestBo create() {
	    RequestBo bo = null;
	    try {
		bo = (RequestBo) this.clone();
	    } catch ( CloneNotSupportedException e ) {
		e.printStackTrace();
	    }
	    return bo;
	}

	private boolean isEmpty( List<String> list ) {
	    return list == null || list.isEmpty();
	}

	@Override
	public String toString() {
	    return "RequestBo [cityNames=" + cityNames + ", functionNames=" + functionNames + ", industryNames=" + industryNames + "]";
	}

    }
}



运行结果:

[c1, c2]
[dd]
[i1, i2]
-------------
-------------
num: 4
RequestBo [cityNames=c1, functionNames=dd, industryNames=i1]
RequestBo [cityNames=c1, functionNames=dd, industryNames=i2]
RequestBo [cityNames=c2, functionNames=dd, industryNames=i1]
RequestBo [cityNames=c2, functionNames=dd, industryNames=i2]


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值