Issue
Lets assume I have a MySql table:
Number | Squared
2 | 4
3 | 9
4 | 16
5 | 25
In my Java application, this is what I have so far:
List<Integer> finalList = fetchStuff();
log.info(desiredList);
private List<Integer> fetchStuff() {
List<Integer> listToReturn = new ArrayList<Integer>();
List<NameOfClass> desiredList = desiredListRepo.findAll();
for (NameOfClass nameOfClass : desiredList) {
listToReturn.add(nameOfClass.getNumber());
listToReturn.add(nameOfClass.getSquaredNumber());
}
return listToReturn;
}
When I print desiredList, this is the output that I want to see:
[[2, 4], [3, 9], [4, 16], [5, 25]]
But currently, I'm seeing:
[2,4,3,9,4,16,5,25]. What am I doing wrong?
Solution
List<Integer> is a List of Integers. You want a List<List<Integer>>, a list of lists of integers. This works like the following:
List<List<Integer>> finalList = fetchStuff();
log.info(desiredList);
private List<List<Integer>> fetchStuff() {
List<List<Integer>> listToReturn = new ArrayList<>();
List<NameOfClass> desiredList = desiredListRepo.findAll();
for (NameOfClass nameOfClass : desiredList) {
List<Integer> inner=new ArrayList<>();
inner.add(nameOfClass.getNumber());
inner.add(nameOfClass.getSquaredNumber());
listToReturn.add(inner);
}
return listToReturn;
}
If you want to have a List of pairs of numbers, you can use Map.Entry:
List<Map.Entry<Integer>> finalList = fetchStuff();
log.info(desiredList);
private List<Map.Entry<Integer, Integer>> fetchStuff() {
List<Map.Entry<Integer>> listToReturn = new ArrayList<>();
List<NameOfClass> desiredList = desiredListRepo.findAll();
for (NameOfClass nameOfClass : desiredList) {
inner.add(nameOfClass.getNumber());
inner.add(nameOfClass.getSquaredNumber());
listToReturn.add(Map.entry(desiredList.getNumber(), desiredList. getSquaredNumber()));
}
return listToReturn;
}
Answered By - dan1st
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.