java - 多个数组元素的组合

标签 java arrays arraylist

最近我实现了以下代码 假设我有 2 个数组 -

arr1 = [a,b,c]

arr2 = [d,e]

应该是这样的

output = [ad,ae,bd,be,cd,ce]

现在假设我有多个数组。

例如:

arr1=[a,b,c]

arr2=[d,e]

arr3=[f,g,h,i]

arrN=[x,y,z,h,o]

output = [adf..x,adf..y and so on]

如何在JAVA中实现这个?请帮忙

我的尝试:

for(int i=0;i<arr1.length();i++)
{
for(int j=0;i<arr2.length();j++)
{
System.out.print(arr1[i] + arr2[j] );
}
}

最佳答案

这是我尝试从多个数组(容器)获取组合。

 private List<List<T>> getCombination(int currentIndex, List<TempContainer<T>> containers) {
    if (currentIndex == containers.size()) {
        // Skip the items for the last container
        List<List<T>> combinations = new ArrayList<List<T>>();
        combinations.add(new ArrayList<T>());
        return combinations;
    }
    List<List<T>> combinations = new ArrayList<List<T>>();
    TempContainer<T> container = containers.get(currentIndex);
    List<T> containerItemList = container.getItems();
    // Get combination from next index
    List<List<T>> suffixList = getCombination(currentIndex + 1, containers);
    int size = containerItemList.size();
    for (int ii = 0; ii < size; ii++) {
        T containerItem = containerItemList.get(ii);
        if (suffixList != null) {
            for (List<T> suffix : suffixList) {
                List<T> nextCombination = new ArrayList<T>();
                nextCombination.add(containerItem);
                nextCombination.addAll(suffix);
                combinations.add(nextCombination);
            }
        }
    }
    return combinations;
}

该方法获取包含项目的容器列表。例如容器 1 将具有 [a,b],容器 2 将具有 [c,d,e]。该方法可以采用任意数量的容器。 //容器类声明如下:

public class TempContainer<T> {
    private List<T> items; 
    public void setItems(List<T> items) {
       this.items = items;
    }

    public List<T> getItems() {
         return items;
    }
}

按如下方式调用此方法:

List<String> list1 = new ArrayList<String>();
list1.add("1");
list1.add("2");
List<String> list2 = new ArrayList<String>();
list2.add("3");
list2.add("4");
list2.add("5");
TempContainer container1 = new TempContainer();
container1.setItems(list1);
TempContainer container2 = new TempContainer();
container2.setItems(list2);
List<TempContainer> containers = new ArrayList<TempContainer>(2);
containers.add(container1);
containers.add(container2);
// Get combinations 
List<List<T>> combinations = getCombination(0, containers);

关于java - 多个数组元素的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22632826/

相关文章:

java - 如何在 Scala 程序中反射(reflect)字段注释 (Java)?

javascript - 不断获取 "TypeError: Cannot set property ' 1' of undefined"

java - 不使用集合实现自己的 ArrayList<>

java - 从 ArrayList 创建默认表

java - (Java8)源码中ArrayList的多个实现有什么区别

java - 使用 hibernate 二级缓存和 hazelcast 进行数据关联

java - 声明一个外部类变量 final 以在内部类中访问它被认为是好的做法吗?

java - 使用注释处理器向类型添加属性

javascript - 通过匹配两个值的差异从数组中过滤对象

python - 如何将深度嵌套的 JSON 文件转换为 CSV?