ResultSet - это интерфейс, поэтому вы можете реализовать его так, как хотите.В вашем случае вы можете создать класс, который реализует ResultSet, но имеет конструктор, который принимает два других ResultSet.Затем реализуйте каждый метод для делегирования либо первому ResultSet, либо второму.Например, метод first () вызовет rs1.first (), а метод last () вызовет rs2.last ().Используя next (), вам нужно быть умным и вызывать rs1.next (), пока в rs1 не закончатся строки, а затем переключиться на rs2.Вы должны будете отслеживать, какой из двух ResultSets был «текущим» для вызовов next ().