I don't like having loop variable that has a scope bigger than the loop it is used for.
Two suggestions:
- Get the set as an array and iterate over it like in my previous code
- Rename variable from i -> something and let all future loops have use i inside the loop scopes.
- Get an iterator from columns and instead of checking `i` for the last element use `hasNext()`