动态地创建循环遍历列表< String>的列表 [英] Dynamically create loops to iterate over a List of List<String>'s

查看:155
本文介绍了动态地创建循环遍历列表< String>的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个来自外部API方法调用的 List List< String>

 清单<清单< String>> outerList 

我必须通过连接每个列表中的字符串来创建唯一的键组合例如:如果外部列表有两个内部列表,比如说list1:{A,B}和list2:{C, d}。然后可能的唯一组合是AC,AD,BC和BD。

但问题是 outerList size是动态的,它可以包含任何数量的内部列表。如果内部列表数字是固定的,那么我可以编写循环和创建组合。

我正在考虑使用反射,递归等方法,但迄今还没有能够解决它。

  public static void main(String [] args){

List< List< String>>> ; outerList = new ArrayList< List< String>>();
列表< String> list1 = new ArrayList< String>();
list1.add(A);
list1.add(B);
列表< String> list2 = new ArrayList< String>();

list2.add(C);
list2.add(D);
outerList.add(list1);

outerList.add(list2); (String s1:list1){
for(String s2:list2){
System.out.println(s1 + s2);







这里 outerList 有2个内部列表,所以我创建了2个循环显式迭代和连接。但是在实时的情况下,outerList可以有任意数量的内部列表,如何循环动态循环所有的内部循环并连接?

解决方案

<这个代码适用于我:

  public class Test 
{

public static void generate(LinkedList< LinkedList< String>> outerList,String outPut){
LinkedList< String> list = outerList.get(0);

(String str:list){
LinkedList< LinkedList< String>> newOuter = new LinkedList< LinkedList< String>>(outerList);
newOuter.remove(list);

if(outerList.size()> 1){
generate(newOuter,outPut + str);
} else {
System.out.println(outPut + str);



$ b public static void main(String [] args)
{
LinkedList< LinkedList< String>> outerList = new LinkedList< LinkedList< String>>();

LinkedList< String> list1 = new LinkedList< String>();
LinkedList< String> list2 = new LinkedList< String>();

list1.add(A);
list1.add(B);

list2.add(C);
list2.add(D);

outerList.add(list1);
outerList.add(list2);

Test.generate(outerList,);




输出:


AC

AD

BC

BD



I have a List of List<String>'s which I get from a external API method call:

List<List<String>> outerList

I have to create unique key combinations by concatenating strings from each list in the same order they are in the outer list.

Example: If outer list has 2 inner lists, say list1: {"A","B"} and list2: {"C","D"}. Then possible unique combinations will be AC, AD, BC and BD.

But the problem is the outerList size is dynamic, it can contain any number of inner lists. If the inner list numbers are fixed then I can write for loops and create combinations.

I am thinking in the direction of using reflections, recursion etc but so far have not been able to solve it.

public static void main(String[] args) {

    List<List<String>> outerList = new ArrayList<List<String>>();
    List<String> list1 = new ArrayList<String>();
    list1.add("A");
    list1.add("B");
    List<String> list2 = new ArrayList<String>();

    list2.add("C");
    list2.add("D");
    outerList.add(list1);

    outerList.add(list2);

    for(String s1: list1) {
        for(String s2: list2) {
            System.out.println(s1+s2);
        }
    }
}

Here outerList has 2 inner lists so I have created 2 for loops explicitly to iterate and concatenate. But in real-time outerList can have any number of inner lists, how to loop dynamically loop through all the inner loops and concatenate?

解决方案

This code works for me:

public class Test
{  

    public static void generate(LinkedList<LinkedList<String>> outerList, String outPut) {
        LinkedList<String> list = outerList.get(0);

        for(String str : list) {
            LinkedList<LinkedList<String>> newOuter = new LinkedList<LinkedList<String>>(outerList);
            newOuter.remove(list);

            if(outerList.size() > 1) {
                generate(newOuter, outPut+str);
             } else {
               System.out.println(outPut+str);
             }
        }
    }

    public static void main(String[] args) 
    {
        LinkedList<LinkedList<String>> outerList = new LinkedList<LinkedList<String>>();

        LinkedList<String> list1 = new LinkedList<String>();
        LinkedList<String> list2 = new LinkedList<String>();

        list1.add("A");
        list1.add("B");

        list2.add("C");
        list2.add("D");

        outerList.add(list1);
        outerList.add(list2);

        Test.generate(outerList, "");
    }      
}

Output:

AC
AD
BC
BD

这篇关于动态地创建循环遍历列表&lt; String&gt;的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆