Java 为每个嵌套为每个

Java 为每个嵌套为每个,java,for-loop,foreach,hashmap,Java,For Loop,Foreach,Hashmap,我有一个表,它是主表,然后我有一个两个表a,b,它有一个主表的外键。如何通过a表和b表检索示例: 然后在表a上插入一个,比表b插入一个,两个 我想按行显示它是1-1,然后是2-2,但是现在我遇到了一个问题,显示了1-1,1-2,2-1,2-2我的朋友说我必须使用hashmap下面的代码让我循环不必要的值 //这是我的密码 ArrayList<Main>listMain = mainDAO.getlAllMain(Connection con); for(Main listMain :

我有一个表,它是主表,然后我有一个两个表a,b,它有一个主表的外键。如何通过a表和b表检索示例:

然后在表a上插入一个,比表b插入一个,两个

我想按行显示它是1-1,然后是2-2,但是现在我遇到了一个问题,显示了1-1,1-2,2-1,2-2我的朋友说我必须使用hashmap下面的代码让我循环不必要的值

//这是我的密码

ArrayList<Main>listMain = mainDAO.getlAllMain(Connection con);
for(Main listMain : listMain) {
  ArrayList<A> listA = aDAO.getallbyMainId(Connection con, int main);
  for(A listA : listA) {
    ArrayList<B> listB = bDAO.getallbyMainId(Connection con, int main);
    for(B listB : listB) {
      Main main = new Main();
      main.setMainName(listMain.getName());
      a.set(listA.getName);
      b.set(listB.getName);
    }
  }
}

这里不应该对每个循环使用嵌套

尝试在listMain上为创建索引,并将每次迭代的结果存储在一种元组中。这个元组可以存储在映射中。正如您的朋友提到的,您可以使用HashMap来实现这一点。 像这样的事情应该可以做到:

    ArrayList<Main>listMain = mainDAO.getlAllMain(Connection con);
    Map<Integer, Pair<A, B>> map = new Hashmap<>();

    for (int i = 0; i < listMain.size(); i++) {
       ArrayList<A> listA = aDAO.getallbyMainId(Connection con, int main);
       ArrayList<B> listB = bDAO.getallbyMainId(Connection con, int main);
       A aValue = listA.get(i);
       B bValue = listB.get(i);
       map.put(i, new Pair(aValue, bValue));
    }
我在这里使用apachecommons类作为元组。有关java中元组的更多信息,请参见下文。例如,您可以为此目的使用自定义类

还可以根据您稍后要使用的信息将配对内容和映射键的类型更改为字符串

我希望我正确理解了你的问题,这个答案对你有帮助

另见


我迷路了。你的朋友能帮你吗?请小心使用标点符号。。。你真的需要澄清你的问题,否则没有人能帮助你,因为没有人理解你。还有,如果你的朋友似乎有想法,你为什么需要我们的帮助?@AntonBalaniuc谢谢,这会让它更好一点。这是我的代码好的:不,这段代码不可编译。嘿,朋友,你真的需要仔细阅读一下:在你的问题中,你把你的标题贴在每个嵌套的每个。。。这不是一个问题。此外,你写下了你所做的,但你根本没有特别提出任何问题。修改问题,我将100%乐意提供帮助。
    ArrayList<Main>listMain = mainDAO.getlAllMain(Connection con);
    Map<Integer, Pair<A, B>> map = new Hashmap<>();

    for (int i = 0; i < listMain.size(); i++) {
       ArrayList<A> listA = aDAO.getallbyMainId(Connection con, int main);
       ArrayList<B> listB = bDAO.getallbyMainId(Connection con, int main);
       A aValue = listA.get(i);
       B bValue = listB.get(i);
       map.put(i, new Pair(aValue, bValue));
    }