You shouldn’t use nested for-each loops here.
Try an indexed for on the listMain
and store the result of each iteration in a kind of tuple. This tuple could be stored in a Map
. As your friend mentioned, you could use a HashMap
for this.
Something like this should do the trick:
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));
}
I’m using the apache-commons class Pair as a tuple here. See below to get more information about tuples in java. You could for example use a custom class for this purpose.
It is also possible to change the type of the pair content and the map key to be a String
depending on the information u want to use later.
I hope i understood your problem correctly and that this answer is helping you.
See also
A Java collection of value pairs? (tuples?)
solved for each nested for each