【问题标题】:for each nested for each对于每个嵌套的每个
【发布时间】:2018-07-09 13:56:32
【问题描述】:

我有一个作为主表的表,然后我有一个两个表(a,b),它们具有主表的外键。我如何通过a tableb table 示例检索:

table header is main id=1

然后在桌子上 a 被插入 one ,比桌子上的两个 b 被插入 one, two

我想按行显示它是one-one 然后是two-two 但现在我通过显示one-oneone-twotwo-onetwo-two 我的朋友说我必须使用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);
    }
  }
}

【问题讨论】:

  • 我迷路了。你的朋友能帮你吗?
  • punctuation marks srsly,使用它们...您确实需要澄清您的问题,否则没有人可以帮助您,因为没有人了解您。另外,如果您的朋友似乎有想法,您为什么需要我们的帮助?
  • @AntonBalaniuc 谢谢,这让它更好一点。
  • "this my code" 好吧:不,这段代码无法编译。
  • 嘿朋友,你真的需要阅读这个:stackoverflow.com/help/how-to-ask 在你的问题中,你将你的标题发布为“for each nested for each”......这不是一个问题。此外,你写了你所做的,但你根本没有特别问任何问题。修改问题,我会 100% 乐意提供帮助。

标签: java for-loop foreach hashmap


【解决方案1】:

您不应该在这里使用嵌套的 for-each 循环。

尝试对listMain 进行索引,并将每次迭代的结果存储在一种元组中。这个元组可以存储在Map 中。正如您的朋友所提到的,您可以为此使用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));
    }

我在这里使用 apache-commons 类 Pair 作为元组。请参阅下文以获取有关 java 中的元组的更多信息。例如,您可以为此目的使用自定义类。

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

我希望我正确理解了您的问题,并且这个答案对您有所帮助。

另请参阅

A Java collection of value pairs? (tuples?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2012-04-19
    • 2021-10-08
    相关资源
    最近更新 更多