Java和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文件的最有效方法是什么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文件的最有效方法是什么 谢谢。正如有人在评论中指出的,
谢谢。正如有人在评论中指出的,您可以使用这个类来计算组合。 请看一下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();