如何在ArrayList(Java)中打印字符串数组中的字符串组合

如何在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

因此,我有一个ArrayList列表,其中包含一些字符串[],我需要这些字符串的组合

所以,若列表包含A={A,b,c}和b={d,e,f},我想打印

ad、ae、af、bd、be、bf、cd、ce、cf

我只是不知道如何得到一个固定数组,然后再得到另一个,这样我就可以遍历它了


编辑:为了澄清这一点,我正在尝试对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());