如何在ArrayList(Java)中打印字符串数组中的字符串组合
因此,我有一个ArrayList列表,其中包含一些字符串[],我需要这些字符串的组合 所以,若列表包含A={A,b,c}和b={d,e,f},我想打印 ad、ae、af、bd、be、bf、cd、ce、cf 我只是不知道如何得到一个固定数组,然后再得到另一个,这样我就可以遍历它了如何在ArrayList(Java)中打印字符串数组中的字符串组合,java,arrays,arraylist,Java,Arrays,Arraylist,因此,我有一个ArrayList列表,其中包含一些字符串[],我需要这些字符串的组合 所以,若列表包含A={A,b,c}和b={d,e,f},我想打印 ad、ae、af、bd、be、bf、cd、ce、cf 我只是不知道如何得到一个固定数组,然后再得到另一个,这样我就可以遍历它了 编辑:为了澄清这一点,我正在尝试对N字符串[]执行此操作,因此我不能只获取第0个和第1个元素。迭代两个数组,并在每一步创建新的字符串组合。毕竟,只是以某种方式打印组合 List<String[]> i
编辑:为了澄清这一点,我正在尝试对N字符串[]执行此操作,因此我不能只获取第0个和第1个元素。迭代两个数组,并在每一步创建新的字符串组合。毕竟,只是以某种方式打印组合
List<String[]> input = ...;
Set<String> allCombinations = new HashSet<>();
for (int i = 0; i < input.size() - 1; i++) {
for (int j = i + 1; j < input.size(); j++) {
allCombinations.addAll(twoArraysCombinations(input.get(i), input.get(j)));
}
}
// print allCombinations
private static Set<String> twoArraysCombinations(String[] first, String[] second) {
Set<String> result = new HashSet<>();
for (String f : first) {
for (String s : second) {
result.add(f + s);
}
}
return result;
}
编辑:作者更改了他的问题,指定数组中有两个以上的列表。这个答案适用于2,但可以用于扩展到更多。现在还不清楚我们想要的是所有可能的组合,还是2的组合 使用嵌套循环在两个ArrayList上迭代,然后连接并打印字符串 如果两个字符串[]数组都在ArrayList中,则应首先使用字符串[]A=yourArrayList.get0和字符串[]B=yourArrayList.get1将它们拉出 您可以使用:
for (String a: list.get(0)) {
for (String b: list.get(1)) {
System.out.println(a + b);
}
}
列表的位置是您的原始列表到目前为止的答案给您留下了深刻印象……请先阅读问题 我会给你一个解决方案的大纲,警告输入错误?。如果这是一个家庭作业问题,我会让你决定如何在条目和其他小细节之间加逗号。另一张海报展示了如何将项目放入列表中,而不是打印它们。根据您的具体需要,您可能希望将我的示例与他们的示例合并
List<String[]> stringLists = ....
for(int firstListIndex = 0; firstListIndex < stringLists.size(); firstListIndex++){
String[] primaryList = stringLists.get(firstListIndex);
for(int secondList = firstListIndex + 1; ....){
String[] secondaryList = ....
for(String first : primaryList){
for(String second : secondaryList){
System.out.println(first + second);
}
}
}
}
循环只需使用2
String a [] ={"a","b","c"};
String b [] ={"a","b","c"};
ArrayList<String> d = new ArrayList<>();
for (String a1 : a) {
for (String b1 : b) {
d.add(a1 + b1);
}
}
System.out.println(d.toString());
这只适用于两个列表。虽然他的示例只有A和B,但我怀疑很多人在一个列表中只存储两个字符串数组。我认为将这种方法应用于两个以上的字符串容器并不困难。同意@SergeyLagutin,作者最初只说A和B,我们无法读懂他们的想法,所以我们用他们提供的信息来回答,即使我们怀疑很多人在一个列表中存储了两个字符串数组。他的问题的关键,对我来说,似乎是我很难看到如何得到一个固定数组,然后再得到另一个,这样我就可以迭代。你帮不了他。“如果是,我必须用字符串[],我该如何打印它们呢?他会问这个问题的。”谢尔盖·古丁喜欢现在的答案。将两个阵列组合放在一个单独的方法中是非常明智的。使零件更简单,如果他想要A x B和B x A,他只需要编辑一行并添加第二行。编码很好。为什么有人突然进来否决所有答案?他们是+1@Parker因为他们错了。虽然我认为不应该用勺子喂人,但在回答中假设列表只包含两项是一个相当大的错误。让我们假设这个家伙知道如果他只有两个字符串[]如何进行两级深循环。@John,如果作者没有指定arraylist中有两个以上的元素,我们无法确定。我们用给定的信息回答,如果我们不这样认为,我们可能会给出错误的答案。不要只是对所有竞争对手的答案投反对票,这是对你的选票的操纵part@KTF-你还是有点不清楚。如果您有一个带有A、B、C的arraylist,您是否仍然只需要ad、ae等的组合?或者你想要adg、adh等的组合?你是如何得到A和B的?我给你一个解决方案的概要。我会让你决定如何在条目之间加逗号,虽然他说我不能只做get0和get1,但他在回答之后编辑了这个。他从来没有要求打印逗号,他们的问题是分开连接。如果你认为某人的回答有问题,首先发表评论被认为是一种策略,而不是进来对每个人的答案投反对票,但你自己的答案在这种情况下,你的答案并不比别人好,这只是选票操纵。@Parker当他说我很难看到如何得到一个固定数组,然后得到另一个数组,这样我就可以迭代它时,你认为他是什么意思。他说他唯一的问题是列表中有多个数组。没有提到打印两个阵列。考虑到他在得到三个没有解决问题的答案后立即编辑了他的问题,我的反对票也不是没有必要的。我对其中一个问题做了评论,解释了原因。他在回答之后编辑了这个问题。你甚至没有给人们更新答案的机会。编辑问题不会通知回答问题的人。@Parker当Sergey改变答案时,我把我的“向下”改为“向上”。如果其他人也这么做,我也会这么做。最糟糕的是,即使在编辑之前,我对KTF的问题也没有进行远程投票,或者尽管没有回答问题,但三个答案都得到了3票赞成票?
String a [] ={"a","b","c"};
String b [] ={"a","b","c"};
ArrayList<String> d = new ArrayList<>();
for (String a1 : a) {
for (String b1 : b) {
d.add(a1 + b1);
}
}
System.out.println(d.toString());