Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和CSV中的组合数学_Java_Csv_Combinations_Combinatorics - Fatal编程技术网

Java和CSV中的组合数学

Java和CSV中的组合数学,java,csv,combinations,combinatorics,Java,Csv,Combinations,Combinatorics,我试图创建一个程序,它计算X选择Y并创建一个可能的组合列表(顺序不重要,没有重复) 例如,A、B、C和D选择2:AB、AC、AD、BC、BD、CD将被生成和存储 每个字母代表试管中的化学试剂。A位于管1中,B位于管2中,依此类推 然后,程序将创建一个CSV或文本文件,在其中读取每个组合并将其存储为一行 例如,它将读取AB并将其转换为管1、管2 读取AC并将其转换为管1、管3 等等 生成组合列表、存储组合列表,然后读取组合列表以创建文本/CSV文件的最有效方法是什么 谢谢。正如有人在评论中指出的,

我试图创建一个程序,它计算X选择Y并创建一个可能的组合列表(顺序不重要,没有重复)

例如,A、B、C和D选择2:AB、AC、AD、BC、BD、CD将被生成和存储

每个字母代表试管中的化学试剂。A位于管1中,B位于管2中,依此类推

然后,程序将创建一个CSV或文本文件,在其中读取每个组合并将其存储为一行

例如,它将读取AB并将其转换为管1、管2

读取AC并将其转换为管1、管3

等等

生成组合列表、存储组合列表,然后读取组合列表以创建文本/CSV文件的最有效方法是什么


谢谢。

正如有人在评论中指出的,您可以使用这个类来计算组合。

请看一下combinationsIterator。它从前n个整数生成k大小的子集

在你的问题中,如果你想要A,B,C,D,选择2,你会打电话

ArrayList<Integer[]> combinations = new ArrayList();
Iterator iter = combinationsIterator(4, 2);
while (iter.hasNext()) {
    int[] resultint = iter.next();
    Integer[] resultInteger = new Integer[2];
    for (int i = 0; i < 2; i++) {
        resultInteger[i] = Integer.valueOf(resultint[i]);
    }
    combinations.add(resultInteger);
}

如果要使用csv,请确保将文本格式化为逗号,并遵循csv的标准格式。您还可以将输出文件名更改为“out.csv”。如果您想保证顺序,请使用for循环而不是for-each循环。

老实说,如果这被关闭为“太宽”,我不会感到惊讶。您在这里有多个问题:1。生成组合的最有效方法2。存储列表的最有效方法3。阅读清单的最有效方法4。创建文本/CSV文件的最有效方法。分解这个问题并查找如何处理这些单独的部分可能会对您有所帮助,因为我希望每个单独的部分都已经得到了回答。对于组合数学部分,您可以使用apache commons-math3
CombinaticsUtils\combinationsIterator
:您的组合数学问题的一个好答案可能在。关于读取和写入CSV文件的答案可以在找到。你是说用
BufferedWriter
代替
BufferedReader
?是的,改为BufferedWriter,谢谢。注意2 self:有一个apache combinationsIterator()。谢谢
BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"));
for (Integer[] i : combinations) {
    out.writeline(i);
}
out.close();