相关疑难解决方法(0)

Java中任意集的笛卡尔积

您是否知道一些简洁的Java库,允许您制作两个(或更多)集的笛卡尔积?

例如:我有三套.一个是Person类的对象,第二个是类Gift的对象,第三个是GiftExtension类的对象.

我想生成一个包含所有可能的三元组Person-Gift-GiftExtension的集合.

集的数量可能会有所不同,所以我不能在嵌套的foreach循环中执行此操作.在某些情况下,我的应用程序需要制作一个Person-Gift对的产品,有时它是三人Person-Gift-GiftExtension,有时甚至可能会设置Person-Gift-GiftExtension-GiftSecondExtension-GiftThirdExtension等.

java cartesian-product

45
推荐指数
5
解决办法
4万
查看次数

Java中的迭代笛卡尔积

我想用Java 计算任意数量的非空集的笛卡尔积.

我写过那个迭代代码......

public static <T> List<Set<T>> cartesianProduct(List<Set<T>> list) {
    List<Iterator<T>> iterators = new ArrayList<Iterator<T>>(list.size());
    List<T> elements = new ArrayList<T>(list.size());
    List<Set<T>> toRet = new ArrayList<Set<T>>();
    for (int i = 0; i < list.size(); i++) {
        iterators.add(list.get(i).iterator());
        elements.add(iterators.get(i).next());
    }
    for (int j = 1; j >= 0;) {
        toRet.add(Sets.newHashSet(elements));
        for (j = iterators.size()-1; j >= 0 && !iterators.get(j).hasNext(); j--) {
            iterators.set(j, list.get(j).iterator());
            elements.set(j, iterators.get(j).next());
        }
        elements.set(Math.abs(j), iterators.get(Math.abs(j)).next());
    }
    return toRet;
}
Run Code Online (Sandbox Code Playgroud)

......但我发现它相当不优雅.有人有更好的,仍然是迭代的解决方案吗?使用一些奇妙的功能性方法的解决方案?否则......关于如何改进它的建议?错误?

java algorithm cartesian-product

18
推荐指数
2
解决办法
1万
查看次数

delphi hashmap?

我有java代码从文本文件填充哈希映射.
HashMap<String, String[]> data = new HashMap<String, String[]>();

我用它来制作键值对.值是一个字符串数组.我必须迭代键值对的每个可能的组合(所以也必须迭代String [] - 数组).这适用于java,但现在我必须将其移植到delphi.有可能这样做吗?如何?谢谢!

delphi hashmap

14
推荐指数
1
解决办法
1万
查看次数

C#排列一系列的arraylists?

我有一个ArrayList [] myList,我正在尝试创建一个列表,列出数组中值的所有排列.

示例:(所有值均为字符串)

myList[0] = { "1", "5", "3", "9" };
myList[1] = { "2", "3" };
myList[2] = { "93" };
Run Code Online (Sandbox Code Playgroud)

myList的计数可以变化,因此事先不知道它的长度.

我希望能够生成一个类似于以下所有排列的列表(但有一些额外的格式).

1 2 93
1 3 93
5 2 93
5 3 93
3 2 93
3 3 93
9 2 93
9 3 93
Run Code Online (Sandbox Code Playgroud)

这是否理解我想要完成的事情?我似乎无法想出这样做的好方法,(如果有的话).

编辑:
我不确定递归是否会干扰我以自己的方式格式化输出的愿望.对不起我之前没有提到我的格式.

我想最终构建一个string []数组,其中包含如下格式的所有组合:

对于"1 2 93"排列

我希望输出为"val0 = 1; val1 = 2; val2 = 93;"

我现在将尝试递归.谢谢Dr.Jokepu

c# arrays arraylist permutation

11
推荐指数
4
解决办法
2万
查看次数